在Java中队列是基于Queue这个接口,不同的实现类有不同的性质,不是用数组就是用链表实现。
1、先看下这个接口提供的方法都有哪些,再具体看实现。
1)boolean add(E e);如果容量不达上限,将元素插入队列,并返回true。
2)boolean offer(E e);如果容量不达上限,将元素插入队列,并返回true。当使用capacity-restricted queue时优于add方法,这个capacity-restricted queue是什么呢?后续看下。
3)E remove();返回队列头元素,并删除。为空报NoSuchElementException异常。
4)E poll();返回队列头元素,并删除。
5)E element();返回队列头元素,但是不删除。为空报NoSuchElementException异常。
6)E peek();返回队列头元素,但是不删除。
2、Queue有两个接口BlockingQueue和Deque,Deque是两端都能增删的实现,即有队列的性质又有栈的性质,搞懂Queue,Deque也差不多了。
BlockingQueue的实现类类
1)ArrayBlockingQueue基于数组实现
offer方法