队列与栈(Queue,Deque,Stack)
队列(Queue)是一种特殊的线性表,是一种先进先出的数据结构,它只允许在表的前端进行删除操作,在表的后端进行插入操作,进行插入操作的端称为队尾,进行删除操作的端称为队头,队列中没有元素时,称为空队列,是一种先进先出的线性数据结构, LinkedList类实现了queue接口
private static void queue() { Queue<String> queue = new LinkedList<>(); queue.add("小花"); queue.add("小小"); queue.add("小丽"); // 队列的长度 System.out.println(queue.size()); // 获取但不移除队列的头,队列为空,返回null System.out.println(queue.peek()); System.out.println(queue.size()); // 获取并移除此队列的头,队列为空,返回null System.out.println(queue.poll()); System.out.println(queue.size()); }
Deque:一个线性的collecton,支持在两端插入和移除元素。此接口既支持有容量限制的双端队列,也支持没有固定大小的双端队列,接口定义在双端队列两端访问元素的方法,提供插入、移除、删除和检查元素的方法,是一个双端队列
private static void deque() { Deque<String> deque = new LinkedList<>(); deque.add("小花"); deque.add("小小"); deque.add("小丽"); // 可以从两边来取 System.out.println(deque.getFirst()); System.out.println(deque.getLast()); }
Stack类代表先进后出的堆栈
private static void stack() { Stack<String> s = new Stack<>(); s.push("bin"); s.push("tom"); s.push("lili"); // 不移除 System.out.println(s.peek()); //移除 System.out.println(s.pop()); System.out.println(s.pop()); }