栈是一种先进后出的数据结构。像浏览器上的后退,以及各个编辑器上的撤销操作都属于栈的功能,而在整个类集里面提供有Stack 整个类是Vector的子类,但是需要注意的是,使用这个的时候用的不是Vector类的方法,使用的时候不要进行向上转型。因为要操作的方法不是List定义的,而是由Stack定义的,有两个核心方法:
入栈:public E push(E item)
出栈:public E pop()
范例:观察输入栈
1 package cn.Tony.demo; 2 3 import java.util.Stack; 4 5 public class TestDemo{ 6 public static void main(String[] args) throws Exception { 7 Stack<String> all=new Stack<String>(); 8 all.push("A"); 9 all.push("B"); 10 all.push("C"); 11 all.push("D"); 12 for(int x=0;x<5;x++) { 13 System.out.println(all.pop()); 14 } 15 } 16 }
如果栈已经空了,那么再次出栈就会抛出空栈异常
栈这个概念主要用于理论上,而在实际上开发之中使用的几率不高
Queue队列
Stack是先进后出,但是还有一个与之类似的为先进先出。
队列就属于先进先出的实现,在Java.Util包中使用Queue来实现队列处理操作,而这个类的子类
如果要使用Queue接口主要是进行先进先出的时候,这个接口有如下的方法:
依照队列取出内容:E poll();
1 package cn.Tony.demo; 2 3 import java.util.LinkedList; 4 import java.util.Queue; 5 6 public class TestDemo{ 7 public static void main(String[] args) throws Exception { 8 Queue<String> queue=new LinkedList<String>(); 9 queue.add("A"); 10 queue.add("B"); 11 queue.add("C"); 12 System.out.println(queue.poll()); 13 System.out.println(queue.poll()); 14 System.out.println(queue.poll()); 15 } 16 }
既然队列可以在整个操作之中起到一个缓冲作用,那么就可以利用队列修改之前多线程讲解的生成者和消费者模型。
Queue的队列的特点就是:先进先出