【发布时间】:2014-09-08 09:35:17
【问题描述】:
我们现有的代码使用 HashSet 来存储数据。我知道 Set 接口的性质是给出随机顺序。但我需要相同的插入顺序。有没有办法从集合中获取插入顺序???
请指导我摆脱这个问题?
我还使用了 LinkedHashSet,它还以其他顺序而不是我想要的插入顺序给出元素...
Set attachmentSet=new HashSet();
attachmentSet.add("dfsdfsd");
attachmentSet.add("erwerwer");
attachmentSet.add("vcvcvcv");
attachmentSet.add("ytytyt");
Iterator attachItr=attachmentSet.iterator();
while(attachItr.hasNext())
{
System.out.println("SET Item::"+attachItr.next());
}
LinkedHashSet newCopy = new LinkedHashSet();
newCopy.add("dfsdfsd");
newCopy.add("erwerwer");
newCopy.add("vcvcvcv");
newCopy.add("ytytyt");
Iterator attachItr2=copy.iterator();
while(attachItr2.hasNext())
{
System.out.println("NEW LinkedHashSet Item::"+attachItr2.next());
}
【问题讨论】:
-
通过小错误修复 -
Iterator attachItr2 = newCopy.iterator()- 我得到了请求的输出。LinkedHashSet专门维护插入顺序。您遇到了什么问题? -
您希望项目在集合中排序(基于哈希码),或者您希望项目按照您插入它们的顺序?
LinkedHashSet应该适用于后一种情况。 -
@TheLostMind: 我想要 HashSet 中的插入顺序。我怎样才能得到它?
-
@Thanks Seelenvirtuose:我没看到。你能帮我从插入顺序中的 HashSet 中获取元素吗?
标签: java collections hashset linkedhashset