码。
Set<String> set = new HashSet<String>(3);
set.add("3 Lorem");
set.add("1 Lorem");
set.add("2 Lorem");
Iterator<String> iterator = set.iterator();
while (iterator.hasNext()) {
String type = (String) iterator.next();
System.out.println(type);
}
输出。
2 Lorem
3 Lorem
1 Lorem
这个命令对我来说很奇怪。我先添加
3 Lorem
,1 Lorem
,然后再添加2 Lorem
。为什么它们在输出中的顺序不同? 最佳答案
从JavaDocs:
此类实现由哈希表支持的Set接口
(实际上是一个HashMap实例)。它不保证
集的迭代顺序;特别是,它不能保证
随着时间的推移,订单将保持不变。此类允许null
元件。
如果您打算保持订单更好地使用TreeSet(但复杂度将为log(n)
也检查这个帖子
Hashset vs Treeset
@Petar指出的EDIT为了更好地保持插入顺序,请使用LinkedHashSet
这个Dzone Article通过示例和性能很好地展示了这三个实例之间的比较
关于java - Java中未排序的HashSet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19812366/