在 Java 集合中,哪个集合不允许重复,哪个还保留数据的插入顺序?
6 回答
LinkedHashSet
根据文档
此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。这个链表定义了迭代顺序,也就是元素被插入到集合中的顺序(insertion-order)
LinkedHashSet
他们两个都做
Set set = new LinkedHashSet();
ALinkedHashSet
应该符合要求。
Set 接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。这个链表定义了迭代顺序,也就是元素插入集合的顺序(insertion-order)。
为此,您可以检查LinkedHashSet 。
Set不允许重复值。LinkedHashSet将保留插入顺序。
Set 接口的哈希表和链表实现,具有可预测的迭代顺序。此实现与 HashSet 的不同之处在于它维护一个双向链表,该列表贯穿其所有条目。该链表定义了迭代顺序,即元素插入集合的顺序(插入顺序)。请注意,如果将元素重新插入集合中,则插入顺序不受影响。(如果 s.add(e) 被调用,而 s.contains(e) 将在调用之前立即返回 true,则元素 e 被重新插入到集合 s 中。)
利用
public class LinkedHashSet<E> extends HashSet<E>
基本上 Set 不允许重复和
这个链表定义了迭代顺序,也就是元素被插入到集合中的顺序(insertion-order)
http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html
您需要一个由LinkedHashSet实现的有序集。