addremove是一对,源自Collection

offerpoll是一对,源自Queue

pushpop是一对,源自Deque,其本质是栈(Stack类由于某些历史原因,官方已不建议使用,使用Deque代替)

offerFirst/offerLastpollFirst/pollLast是一对,源自Deque,其本质是双端队列

继承关系

Iterable -> Collection -> Queue -> Deque -> LinkedList

不同之处

add/remove源自集合,所以添加到队尾,从队头删除;

offer/poll源自队列(先进先出 => 尾进头出),所以添加到队尾,从队头删除;

push/pop源自栈(先进后出 => 头进头出),所以添加到队头,从队头删除;

offerFirst/offerLast/pollFirst/pollLast源自双端队列(两端都可以进也都可以出),根据字面意思,offerFirst添加到队头,offerLast添加到队尾,pollFirst从队头删除,pollLast从队尾删除。
总结

add/offer/offerLast添加队尾,三个方法等价;

push/offerFirst添加队头,两个方法等价。

remove/pop/poll/pollFirst删除队头,四个方法等价;

pollLast删除队尾。

用法

虽说某几个方法等价,但是我们在使用的时候,建议根据用途来使用不同的方法

比如你想把LinkedList当做集合list,那么应该用add/remove

如果想用作队列,则使用offer/poll,如果用作栈,则使用push/pop

如果用作双端队列,则使用offerFirst/offerLast/pollFirst/pollLast

根据语义使用,就不会发生:我想删队尾,结果删了队头这种事了。

最后修改:2022 年 06 月 02 日 10 : 27 AM
赏杯咖啡喝 谢谢您~