Java使用泛型实现栈结构的示例代码

目录
  • 使用泛型实现栈结构
    • 1.题目
    • 2.解题思路
    • 3.代码详解
  • 多学一个知识点

使用泛型实现栈结构

1.题目

泛型是JAVA重要的特性,使用泛型编程,可以使代码复用率提高。

实现:使用泛型实现栈结构

2.解题思路

创建一个泛型类:Stack。

定义3个方法,入栈的push方法,出栈的pop方法,还有判断栈是否为空的empty()方法。

在底层实现上,使用LinkedList作为容器。

泛型类是含有一个或多个类型参数的类。定义泛型类很简单,只需要在类的名称后面加上“<”和“>”,并在其中指明类型参数。

3.代码详解

Stack

package com.xiaoxuzhu;
import java.util.LinkedList;
/**
 * Description:
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/10.1	    xiaoxuzhu		2022/5/10		    Create
 * </pre>
 * @date 2022/5/10
 */

public class Stack<T> {

    private LinkedList<T> container = new LinkedList<T>();

    public void push(T t) {
        container.addFirst(t);
    }

    public T pop() {
        return container.removeFirst();
    }

    public boolean empty() {
        return container.isEmpty();
    }
}

StackTest

package com.xiaoxuzhu;

/**
 * Description:
 *
 * @author xiaoxuzhu
 * @version 1.0
 *
 * <pre>
 * 修改记录:
 * 修改后版本	        修改人		修改日期			修改内容
 * 2022/5/10.1	    xiaoxuzhu		2022/5/10		    Create
 * </pre>
 * @date 2022/5/10
 */
public class StackTest {
    public static void main(String[] args) {
        Stack<String> stack = new Stack<String>();
        System.out.println("向栈中增加字符串:");
        System.out.println("虚竹哥真帅");
        System.out.println("虚竹哥yyds");
        System.out.println("虚竹哥好厉害");
        stack.push("虚竹哥真帅");  //向栈中增加字符串
        stack.push("虚竹哥yyds");   //向栈中增加字符串
        stack.push("虚竹哥好厉害"); //向栈中增加字符串
        System.out.println("从栈中取出字符串:");
        while (!stack.empty()) {
            System.out.println((String) stack.pop());//删除栈中全部元素并进行输出
        }
    }
}

多学一个知识点

1、泛型参数的命名一般使用单个的大写字母,如果对于任意类型可以使用字母T等。

2、泛型类型的参数只能使用类类型,而不能使用基本数据类型。

到此这篇关于Java使用泛型实现栈结构的示例代码的文章就介绍到这了,更多相关Java栈结构内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java数据结构关于栈的实例应用

    此文章介绍关于顺序栈,链式栈的实例操作,括号匹配,表达式求值(后缀表达式) 1.声明一个栈接口SStack package ch05; public interface SStack <T>{ boolean isEmpty(); // 判断栈是否为空 void push(T x); // 元素x入栈 T pop(); // 出栈,返回栈顶元素 T peek(); // 返回栈顶元素,但不出栈 }  2. 定义顺序栈类SeqStack<T>,包括数据元素的对象数组和栈顶元素下标两个

  • Java数据结构与算法之栈(Stack)实现详解

    本篇是java数据结构与算法的第2篇,从本篇开始我们将来了解栈的设计与实现,以下是本篇的相关知识点: 栈的抽象数据类型顺序栈的设计与实现链式栈的设计与实现栈的应用 栈的抽象数据类型   栈是一种用于存储数据的简单数据结构,有点类似链表或者顺序表(统称线性表),栈与线性表的最大区别是数据的存取的操作,我们可以这样认为栈(Stack)是一种特殊的线性表,其插入和删除操作只允许在线性表的一端进行,一般而言,把允许操作的一端称为栈顶(Top),不可操作的一端称为栈底(Bottom),同时把插入元素的操作

  • java使用泛型实现栈结构示例分享

    思路分析:既然是用泛型实现栈结构,那就不能用JDK自带的stack包了,需要自己定义一个栈结构,比如LinkedList. 代码如下: Stack.java: 复制代码 代码如下: package cn.edu.xidian.crytoll;import java.util.LinkedList; public class Stack<T> { private LinkedList<T> container = new LinkedList<T>(); public v

  • Java编程思想里的泛型实现一个堆栈类 分享

    觉得作者写得太好了,不得不收藏一下. 对这个例子的理解: //类型参数不能用基本类型,T和U其实是同一类型. //每次放新数据都成为新的top,把原来的top往下压一级,通过指针建立链接. //末端哨兵既是默认构造器创建出的符合end()返回true的节点. 复制代码 代码如下: //: generics/LinkedStack.java// A stack implemented with an internal linked structure.package generics; publi

  • Java使用泛型实现栈结构的示例代码

    目录 使用泛型实现栈结构 1.题目 2.解题思路 3.代码详解 多学一个知识点 使用泛型实现栈结构 1.题目 泛型是JAVA重要的特性,使用泛型编程,可以使代码复用率提高. 实现:使用泛型实现栈结构 2.解题思路 创建一个泛型类:Stack. 定义3个方法,入栈的push方法,出栈的pop方法,还有判断栈是否为空的empty()方法. 在底层实现上,使用LinkedList作为容器. 泛型类是含有一个或多个类型参数的类.定义泛型类很简单,只需要在类的名称后面加上“<”和“>”,并在其中指明类型

  • Java实现级联下拉结构的示例代码

    目录 前言 构建统一返回下拉结构 构建集合<对象>转下拉树工具类 构建List<Map>转下拉或下拉树的工具类 前言 在开发过程中,会遇到很多的实体需要将查出的数据处理为下拉或者级联下拉的结构,提供给前端进行展示. 在数据库查出的结构中,可能是集合<实体类>的结构,也有可能是List<Map>的结构. 在下拉或者级联下拉的节点数据中,有时候还需要动态的携带其他的参数,已便于前端对某些数据的显示 如区域的级联下拉树中,需要携带经纬度的区域–在选择的时候在地图展

  • Java中树的存储结构实现示例代码

    一.树 树与线性表.栈.队列等线性结构不同,树是一种非线性结构. 一棵树只有一个根节点,如果一棵树有了多个根节点,那它已经不再是一棵树了,而是多棵树的集合,也被称为森林. 二.树的父节点表示法 树中除根节点之外每个节点都有一个父节点,为了记录树中节点与节点之间的父子关系,可以为每个节点增加一个parent域,用以记录该节点的父节点. package com.ietree.basic.datastructure.tree; import java.util.ArrayList; import ja

  • Java实现树形结构的示例代码

    目录 前言 数据库表结构 实现思路 具体代码 1.造数据,和数据库表数据一致 2.树型结构实体类 前言 由于业务需要,后端需要返回一个树型结构给前端,包含父子节点的数据已经在数据库中存储好,现在需要做的是如何以树型结构的形式返给给前端. 数据库表结构 实现思路 1.拿到有父子节点的集合数据 2.遍历集合数据,拿到所有的根节点 3.遍历根节点,拿到所有的子节点 4.递归子节点,将递归的子节点接上其父节点,直到子节点为空,递归完成 5.递归好后以集合形式返回,返回前端时以JSON格式转换后返回 具体

  • Java实现8种排序算法的示例代码

    冒泡排序 O(n2) 两个数比较大小,较大的数下沉,较小的数冒起来. public static void bubbleSort(int[] a) { //临时变量 int temp; //i是循环次数,也是冒泡的结果位置下标,5个数组循环5次 for (int i = 0; i < a.length; i++) { //从最后向前面两两对比,j是比较中下标大的值 for (int j = a.length - 1; j > i; j--) { //让小的数字排在前面 if (a[j] <

  • java压缩文件与删除文件的示例代码

    压缩文件 :toZip(String srcDir, OutputStream out,boolean KeepDirStructure) 删除文件:deleteFolder(File folder) /** * 压缩成ZIP 方法1 * * @param srcDir * 压缩文件夹路径 * @param out * 压缩文件输出流 * @param KeepDirStructure * 是否保留原来的目录结构,true:保留目录结构; * false:所有文件跑到压缩包根目录下(注意:不保留

  • Java实现经典游戏推箱子的示例代码

    目录 前言 主要设计 功能截图 代码实现 核心类 声音播放类 总结 前言 <推箱子>推箱子是一个古老的游戏,目的是在训练你的逻辑思考能力.在一个狭小的仓库中,要求把木箱放到指定的位置,稍不小心就会出现箱子无法移动或者通道被堵住的情况,所以需要巧妙的利用有限的空间和通道,合理安排移动的次序和位置,才能顺利的完成任务. 游戏是用java语言实现,采用了swing技术进行了界面化处理,设计思路用了面向对象思想. 主要需求 控制搬运工上下左右移动,来将箱子推到指定地点 主要设计 1.游戏面板生成显示

  • Java实现优先队列式广度优先搜索算法的示例代码

    目录 1.问题描述 2.实现 3.测试 1.问题描述 2.实现 package com.platform.modules.alg.alglib.p933; import java.util.Arrays; import java.util.PriorityQueue; public class P933 { public static final int N = 10; // 记录最优解 boolean bestx[] = new boolean[N]; // 辅助数组,用于存储排序后的重量和价

  • Java利用Redis实现消息队列的示例代码

    本文介绍了Java利用Redis实现消息队列的示例代码,分享给大家,具体如下: 应用场景 为什么要用redis? 二进制存储.java序列化传输.IO连接数高.连接频繁 一.序列化 这里编写了一个java序列化的工具,主要是将对象转化为byte数组,和根据byte数组反序列化成java对象; 主要是用到了ByteArrayOutputStream和ByteArrayInputStream; 注意:每个需要序列化的对象都要实现Serializable接口; 其代码如下: package Utils

随机推荐