我检查了Java.util.LinkedList
类,发现Linked List类提供了几种方法
public void addFirst(E e)
public boolean offerFirst(E e)
public void push(E e)
所有这3种方法都将一个元素添加到列表的开头。那么,为什么不同的实现需要相同的功能呢?
是因为推送适用于Stack和
offerFirst–退出
addFirst–LinkedList
或者其他一些基本原理?
请在这里分享一些见解。感谢
由于Deque
接口的约定,这些都在LinkedList
中实现。
Deque
的javadocs清楚地解释了区别:
void addFirst(E E)
如果可以在不违反容量限制的情况下立即插入指定的元素,请在此deque的前面插入该元素当使用容量受限的deque时,通常最好使用offerFirst(E)方法
布尔offerFirst(E E)
在该deque的前面插入指定的元素,除非它会违反容量限制。当使用容量受限的deque时,此方法通常比addFirst(E)方法更可取,后者只能通过抛出异常才能插入元素
ArrayBlockingQueue
类(javadocs)是实现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.
有关更多信息:LinkedList