我正在检查Java.util.LinkedList
类,发现Linked List类提供了几个方法
public void addFirst(E e)
public boolean offerFirst(E e)
public void push(E e)
所有这 3 个方法都将一个元素添加到列表的头部。
那么为什么相同的功能需要不同的实现呢?
是不是因为
推送适用于堆栈和
OfferFirst – 出队
addFirst——链表
或者其他一些基本原理?
请在这里分享一些见解。谢谢
这些实施于LinkedList
由于合同Deque
界面。
And the javadocs http://docs.oracle.com/javase/8/docs/api/java/util/Deque.html for Deque
清楚地解释差异:
无效addFirst(E e)
如果可以在不违反容量限制的情况下立即执行此操作,则在此双端队列的前面插入指定的元素。当使用容量受限的双端队列时,通常最好使用方法 OfferFirst(E)。
布尔 OfferFirst(E e)
在此双端队列的前面插入指定的元素,除非它违反容量限制。当使用容量受限的双端队列时,此方法通常优于 addFirst(E) 方法,后者只能通过抛出异常来插入元素失败。
The ArrayBlockingQueue
class (javadocs https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ArrayBlockingQueue.html) 是有界队列实现的示例,它实现Deque
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)