1、思路:
堆栈的思路:
话不多说看图解!
从图中可以看出,堆栈容器就是一个先进后出的容器?
什么意思呢?
举个例子,当我们洗碗碟盘子的时候,我们总是把第一个洗好的盘子放到桌上,慢慢的往上面叠,但是,在我们拿出来的时候,我们第一个放进去的盘子,总是会第一个拿出来,这就是堆栈容器的特性
但是在一般的代码中,我们查看集合遍历出来的顺序就是当初加进去的顺序,那么我们该怎么去做一个堆栈容器呢?
看代码!
2、第一种方式
正常顺序添加(最后加入的在数组第一位),第一个取第一个放入的
public class Demo2 {
// 用linkedlist集合做一个堆栈容器
public static void main(String[] args) {
LinkedList list = new LinkedList<>();
list.add("aa");
list.add("ba");
list.add("ca");
DuiZhan d = new DuiZhan(list);
System.out.println(d);
System.out.println(d.pop());
System.out.println(d.pop());
System.out.println(d.pop());
}
}
class DuiZhan {
private LinkedList list;
public DuiZhan(LinkedList list) {
super();
this.list = list;
}
// 弹栈:把子弹打出来
public Object pop() {
return list.removeLast();
}
}
其中removelast()方法就是返回移出数组中最后面的那个数据,也就是最开始放进去的那个盘子
,到这里也就实现了简单的堆栈容器
三、第二种方式
把加入的永远置顶(也就是最后加入的在数组的最末尾),正常从第一个开始拿,也就是添加的方式变了
看代码
//压栈
public void push(Object value){//压
linkedList.addFirst(value);
}
//出栈
public Object pop(){//弹
Object value=linkedList.getFirst();
linkedList.removeFirst();
return value;
}
//容器大小
public int size(){
return linkedList.size();
}
public static void main(String[] args) {
d1 d1=new d1();
d1.push("12");
d1.push("13");
d1.push("14");
d1.push("15");
while(d1.size()!=0){
System.out.println(d1.pop());
}
}