我编写了一个简单的程序,它将一个字符串数组转换为一个列表,然后转换为一个Set,最后打印出来。 这是代码:
public static void main(String[] args) {
String[] array = {"hello", "goodbye", "welcome", "thanks"};
List<String> list = Arrays.asList(array);
System.out.println(list);
Set<String> set = new HashSet<String>(list);
System.out.println(set);
}
该集返回 [你好,再见,欢迎,谢谢] [你好,谢谢,再见,欢迎]
无论我创建数组的顺序如何,它都会按特定顺序返回Set。那么Set&lt;&gt;确定值应该以什么顺序放入?
答案 0 :(得分:3)
HashSet
的迭代顺序是一个实现细节,可能会在发行版之间发生变化。你应该假设排序是神奇的,不可思议的,并且可能会发生变化。
(实际上,它受元素的哈希码影响,HashSet内部使用的拖尾函数,以及散列桶通常出现的顺序。)
答案 1 :(得分:3)
集合中元素的顺序由其Iterator
中元素的顺序决定,并在Set.iterator()中指定
元素以无特定顺序返回(除非此集合是某个提供保证的类的实例)。
因此Set
没有固有的顺序。
但是,Set
只是interface
。 <{1}}有各种各样的实现做提供保证。
Set
。O(1)
顺序排序 - 有点像enum
。