队列
队列就是先进先出的一种数据结构。java提供了一个Queue结构用来表示队列。这个接口中提供了一些方法,用于对队列中的元素进行操作:
offer(obj):从队尾存入一个元素
poll():从队首取出一个元素
peek():(中译:偷窥,一瞥)从队首获取一个元素,但不从队列中删除它
在集合中,LinkedList就实现了Queue接口,所以可以吧LinkedList作为一个队列使用,相应地任何一个LinkedList对象都具有以上三个方法。
双向队列
双向队列即接口Deque(译作:双向队列),它继承自Queue,这意味着它拥有Queue接口的三个方法,除此之外,它还有自己的offerFirst/offerLast、pollFirst/pollLast、peekLast/peekFirst
栈
栈即先进先出的一种数据结构,把栈想象成一个弹夹,弹夹里有弹簧,我们通过push推入元素,通过pop(译作:弹出)将栈顶的元素弹出来。
这种结构可以通过双向队列就来实现。在双向队列中,除了以上的6种方法外,还提供了push(obj)与pop()方法来添加与删除元素。用来表示当前的LinkedList正作为一个栈来使用。
总结
无论是队列、双向队列和栈,它们都通过LinkedList来实现,所以一个LinkedList对象中,同时拥有push pop poll offer add get等等方法,但它不作为匿名类时能使用哪些方法,全看它的引用类型是什么。
如是Queue类型,那能使用poll/offer
如是Deque类型,那就能使用poll/offer/push/pop
明白了吗?