LinkedList 为同一功能提供了多种方法-为什么?

ini*_*tyk 5 java collections linked-list

我正在检查Java.util.LinkedList类,发现 Linked List 类提供了几种方法

public void addFirst(E e) 

public boolean offerFirst(E e)

public void push(E e)
Run Code Online (Sandbox Code Playgroud)

所有这 3 种方法都将一个元素添加到列表的头部。那么为什么不同的实现需要相同的功能呢?

是不是因为 push 是针对 Stack 和

offerFirst – 出队

addFirst – 链表

或其他一些基础知识?

请在这里分享一些见解。谢谢

Cod*_*der 2

这些是LinkedList由于接口契约而实现的Deque

javadoc清楚Deque解释了差异:

无效addFirst(E e)

如果可以在不违反容量限制的情况下立即执行此操作,则在此双端队列的前面插入指定的元素。当使用容量受限的双端队列时,通常最好使用方法 OfferFirst(E)。

布尔 OfferFirst(E e)

在此双端队列的前面插入指定的元素,除非它违反容量限制。当使用容量受限的双端队列时,此方法通常优于 addFirst(E) 方法,后者只能通过抛出异常来插入元素失败。

该类ArrayBlockingQueue( javadocs ) 是一个有界队列实现的示例,它实现了Deque.