【发布时间】:2019-05-21 12:30:36
【问题描述】:
正如LinkedHashSet 的文档所述,它是
Set接口的哈希表和链表实现,带有 可预测的迭代顺序。此实现不同于 HashSet 因为它维护一个双向链表,贯穿其所有 条目。
所以它本质上是一个HashSet,具有由链表实现的 FIFO 键队列。考虑到LinkedList 是Deque 并且特别是允许在开头插入,我想知道为什么LinkedHashSet 除了Set 接口中存在的方法之外还没有addFirst(E e) 方法。实现这一点似乎并不难。
【问题讨论】:
-
@RoyShahaf 你确定吗?
addforLinkedList等价于addLast。addFirst有不同的含义。 -
addFirst函数什么时候有用? -
因为
LinkedHashSet保留了插入顺序。而已。没有办法操纵该顺序。另外,如果你添加了接口中没有的方法,那么你就不能再对通用接口进行编程了。 -
@ElliottFrisch 如果遍历顺序很重要,那么您通常已经在使用更具体的类型。
-
Javadoc 说(部分)这个链表定义了迭代顺序,即元素插入集合的顺序(插入顺序)。你想要
ArrayDeque?
标签: java linked-list deque linkedhashset