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

Java LinkedList为同一功能提供了多种方法-为什么?,java,collections,linked-list,Java,Collections,Linked List,我检查了Java.util.LinkedList类,发现链表类提供了几种方法 public void addFirst(E e) public boolean offerFirst(E e) public void push(E e) 这三种方法都会在列表的开头添加一个元素。 那么,为什么不同的实现需要相同的功能呢 是因为 推送意味着堆栈和 offerFirst–退出队列 addFirst–LinkedList 还是其他一些基本面 请在这里分享一些见解。感谢由于Deque接口的契约,这些

我检查了
Java.util.LinkedList
类,发现链表类提供了几种方法

public void addFirst(E e) 

public boolean offerFirst(E e)

public void push(E e)
这三种方法都会在列表的开头添加一个元素。 那么,为什么不同的实现需要相同的功能呢

是因为 推送意味着堆栈和

offerFirst–退出队列

addFirst–LinkedList

还是其他一些基本面


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

由于
Deque
接口的契约,这些都在
LinkedList
中实现

而for
Deque
则清楚地解释了这一区别:

无效地址优先(E)

如果可以在不违反容量限制的情况下立即插入指定的元素,则在该元素的前面插入该元素当使用容量受限的设备时,通常最好使用第一(E)种方法。

布尔offerFirst(E)

在此数据块的前面插入指定的元素,除非它违反容量限制。当使用容量受限的deque时,此方法通常比addFirst(E)方法更可取,因为addFirst(E)方法只能通过抛出异常而无法插入元素。


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

花时间查看java文档

public void addFirst(E e) 
// Inserts the specified element at the beginning of this list.

public boolean offerFirst(E e)
// Inserts the specified element at the front of this list.

public void push(E e)
// Pushes an element onto the stack represented by this list.
有关更多信息:

public void addFirst(E)
在此列表开头插入指定的元素。指定人:addFirst in interface Deque Parameters:e-要添加的元素
public boolean offerFirst(e)
将指定的元素插入此列表的前面。由:offerFirst在接口Deque Parameters:e中指定-要插入的元素返回:true(由Deque.offerFirst(e)指定),对我来说似乎是一样的!没有关于引发异常的任何信息。