LinkedList
对element()
方法和getFirst()
方法有类似的描述(奇怪 - 不是相同的单词)。LinkedList类中的element()和getFirst()方法有什么区别?
Deque
明确指出两种方法在返回值和异常方面是相同的。
我的问题是 - 为什么有2个相同的方法?它是否具有向后兼容性?一种方法比另一种更有效吗?
LinkedList
对element()
方法和getFirst()
方法有类似的描述(奇怪 - 不是相同的单词)。LinkedList类中的element()和getFirst()方法有什么区别?
Deque
明确指出两种方法在返回值和异常方面是相同的。
我的问题是 - 为什么有2个相同的方法?它是否具有向后兼容性?一种方法比另一种更有效吗?
element()
从Queue
下才有意义只有一个访问的方法,因为你可以排队做的是删除第一个元素继承。然而,一个deque支持这个从这两个结束,需要明确的方法来这样做。
设计一个API可以让你访问第一个元素element()
而最后一个元素访问getLast()
并不是很好。
可能玩成这样另一件事是,Deque
在1.6,在Java Collections Framework的古地区的部分地区已过时的新公约,如明确get~
/set~
方法访问属性增加。在这种情况下,getFirst()
和getLast
更贴近当前的Java约定。
在列出的链接中,它们看起来像是相同的。但在队列中,element()
似乎是在队列中的第一个元素处达到峰值的方法,但不会将其从队列中移除。
在Java 1.6中,LinkedList
实现了Deque
(双端队列)。从Deque.element()
的javadocs:
获取,但不移除此 双端队列表示的队列的头部 (换言之,此双端队列的第一 元素)。此方法 仅与它不同,因为它 会抛出异常,如果此双端队列为空,则为 。
该方法等效于
getFirst()
。
在Java 1.5,LinkedList
有两种方法,但getFirst()
不是由一个接口支持。我的猜测是,在Java 1.6中,他们故意实施Deque
以包含此方法。
在Java 1.4中,LinkedList
只有getFirst()
,但它不支持接口。
很显然,我会说这是保持向后兼容性的问题:
LinkedList
1.4有getFirst()和 只有List
接口LinkedList
1。5个工具Queue
,因此需要支持等效elements()
方法LinkedList
1.6器具Deque
但因为:a)它必须保持向后兼容和b)通过策略,所有的方法应该通过接口进行备份,所述Deque
界面还包括重复方法
实际上,get/set约定并不是真正的新约,它实际上比集合框架更旧(例如,将旧的Vector类与新的List接口进行比较)。 – 2011-02-06 20:21:04
老实说,在这种情况下,element()方法应该已经被淘汰。假设很多人不会赞赏,难道它至少已经被弃用了吗?或者至少在Javadocs中有一种关于从哪两种方法中挑选出的方法。 (我相当肯定,这不是Java中重复方法的唯一例子)。 – user183037 2011-02-06 21:16:25