当我运行下面显示的代码时,输出为[50,20,5,40,10,30]。 我不理解这个命令。为什么输出不是[10,5,20,30,40,50]?
List list = Arrays.asList(10, 5, 10, 20, 30, 40, 50);
System.out.println(new HashSet(list));
答案 0 :(得分:5)
此类实现Set接口,由哈希表(实际上是HashMap实例)支持。它不能保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。该类允许null元素。
答案 1 :(得分:5)
HashSet
不维护广告订单。您需要的是LinkedHashSet
。
答案 2 :(得分:1)
HashSet
课程不保证您输入数据的顺序。
如果您不将List
放在HashSet
中,而是继续List
,您将获得添加值的顺序它
您可以使用LinkedHashSet
来保留广告订单。
如果您想排序 List
,那么您可以使用Collections.sort()
。 (额外信息,如果您不需要,请忽略)
答案 3 :(得分:0)
来自doc
Java.util.HashSet不保证集合的迭代顺序;特别是,它不保证订单会随着时间的推移保持不变。