27

在 Java 集合中,哪个集合不允许重复,哪个还保留数据的插入顺序?

4

6 回答 6

29
LinkedHashSet

根据文档

此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。这个链表定义了迭代顺序,也就是元素被插入到集合中的顺序(insertion-order)

于 2013-05-10T10:47:41.077 回答
21

LinkedHashSet他们两个都做

Set set = new LinkedHashSet();
于 2013-05-10T10:45:15.680 回答
10

ALinkedHashSet应该符合要求。

Set 接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。这个链表定义了迭代顺序,也就是元素插入集合的顺序(insertion-order)

于 2013-05-10T10:45:56.493 回答
5

为此,您可以检查LinkedHashSet 。

Set不允许重复值。LinkedHashSet将保留插入顺序

Set 接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。该链表定义了迭代顺序,即元素插入集合的顺序(插入顺序)。请注意,如果将元素重新插入集合中,则插入顺序不受影响。(如果 s.add(e) 被调用,而 s.contains(e) 将在调用之前立即返回 true,则元素 e 被重新插入到集合 s 中。)

于 2013-05-10T10:45:54.930 回答
1

利用

public class LinkedHashSet<E> extends HashSet<E>

基本上 Set 不允许重复和

这个链表定义了迭代顺序,也就是元素被插入到集合中的顺序(insertion-order)

http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html

于 2013-05-10T10:47:23.187 回答
1

您需要一个由LinkedHashSet实现的有序集。

于 2013-05-10T10:47:28.390 回答