(一) Queue接口及LinkedList实现
Queue接口与List、Set同一级别,都是继承了Collection接口。
Queue接口定义的6个方法:
添加元素:
add:添加失败,会抛异常
offer:添加失败,会返回false
删除元素:
remove:队列为空,会抛异常
poll:队列为空,会返回null
检查元素:
element:返回头部元素,不删除元素,队列为空,会抛异常
peek:返回头部元素,不删除元素,队列为空,会返回false
下面使用LinkedList作为Queue的实现例子
import java.util.LinkedList; import java.util.Queue; public class SimpleQueueTester { public static void main(String[] args) { Queue<String> queue = new LinkedList<String>(); //add()和remove()方法在失败的时候会抛出异常,不推荐 // 添加元素 queue.offer("A"); queue.offer("B"); queue.offer("C"); // 检查元素 System.out.println("peek : " + queue.peek()); // 返回第一个元素,并删除 System.out.println("poll : " + queue.poll()); // 查看Queue queue.forEach(System.out::println); } }
(二) Deque接口及LinkedList实现
Deque是一个线性collection,支持在两端插入和移除元素。名称 deque 是“double ended queue(双端队列)”的缩写,通常读为“deck”。
同Queue接口一样,Deque提供插入、移除和检查元素的方法。
每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。
添加元素:
addFirst:第一个元素,添加失败,会抛异常
offeFirstr:第一个元素,添加失败,会返回false
addLast:最后一个元素,添加失败,会抛异常(方法等价于Queue接口add方法)
offerLast:最后一个元素,添加失败,会返回false(方法等价于Queue接口offer方法)
删除元素:
removeFirst:第一个元素,队列为空,会抛异常(方法等价于Queue接口remove方法)
pollFirst:第一个元素,队列为空,会返回null(方法等价于Queue接口poll方法)
removeLast:最后一个元素,队列为空,会抛异常
pollLast:最后一个元素,队列为空,会返回null
检查元素:
getFirst:返回头部元素,不删除元素,队列为空,会抛异常(方法等价于Queue接口element方法)
peekFirst:返回头部元素,不删除元素,队列为空,会返回false(方法等价于Queue接口peek方法)
getLast:返回头部元素,不删除元素,队列为空,会抛异常
peekLast:返回头部元素,不删除元素,队列为空,会返回false
下面使用LinkedList作为Deque的实现例子:
import java.util.Deque; import java.util.LinkedList; public class SimpleDequeTester { public static void main(String[] args) { Deque<String> deque = new LinkedList<String>(); // 添加元素 deque.addLast("A"); deque.addLast("B"); deque.addFirst("C"); deque.forEach(System.out::println); // 检查元素 System.out.println("first:" + deque.peekFirst()); System.out.println("last:" + deque.peekLast()); // 删除元素 System.out.println("deque poll : " + deque.pollFirst()); deque.forEach(System.out::println); } }