用LinkedList模拟Stack功能

  集合体系在Java中比较重要,整个集合体系是在JDK1.2版本后出现,Collection作为整个体系的顶层,拥有整个体系通用的功能。对于其下面的小弟,也是各有千秋。下面就一道面试题来看看LinkedList及Stack的特点。
  需求:用LinkedList模拟实现Stack的功能。
  分析:首先,要做这题要明白题目的意图,题目并不难,可是要没看懂题意做起来也不是件容易的事。这道题要求是让自定义一个集合来模拟出Stack类的功能。那问题又来了,Stack到底有什么特点呢?这就要求要对Stack类了解,Stack是栈,栈的特点就是先进后出,其方法有压栈、弹栈和判空。知道了这些,做这题就是水到渠成的事了,接下来看看代码体现。

 1 package cn.dolphin;
 2 
 3 import java.util.LinkedList;
 4 
 5 public class StackDemo {
 6     public static void main(String[] args) {
 7         //为了方便测试,这里就存储遍历String类型。
 8         StackEnum<String> se = new StackEnum<>();
 9         se.push("Hello");
10         se.push("Java");
11         se.push("World");
12         while(!se.empty()){
13             String string = se.pop();
14             System.out.println(string);
15         }
16     }
17 }
18 //定义泛型类,是因为并不确定自定义集合将来要存储什么类型元素。
19 class StackEnum<E>{
20     private LinkedList<E> linkedList = null;
21     public StackEnum(){
22         linkedList = new LinkedList<E>();
23     }
24     public E push(E e){
25         //压栈特点:后进的元素在栈顶,想想LinkedList中addFirst()方法。
26         linkedList.addFirst(e);//总在linkedList的开头添加元素。
27         return e;//返回添加的元素。
28     }
29     public E pop(){
30         //出栈特点:每次栈顶元素出栈。和LinkedList中removeFirst()方法对应。
31         return linkedList.removeFirst();//移除并返回linkedList的第一个元素。
32     }
33     public boolean empty(){
34         return linkedList.size() == 0;//判断linkedList的长度,用于遍历。
35     }
36     //当然Stack还有一个peek()方法,没有写出,有兴趣的筒子可以自己写写。
37 }

  这里再一次看到泛型在Java中的应用,所以知识是需要积累,如果没有前面泛型的支撑,这里就只能写特定的类型。

转载于:https://www.cnblogs.com/magics/p/3633525.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值