85 容器(十二)——队列与栈:LinkedList的光芒万丈

队列

队列就是先进先出的一种数据结构。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

明白了吗?

posted @ 2020-01-08 15:14  Scorpicat  阅读(110)  评论(0编辑  收藏  举报