为什么在第二和第三组中保持秩序:排序在Java中的HashSet的元素
Integer[] j = new Integer[]{3,4,5,6,7,8,9};
LinkedHashSet<Integer> i = new LinkedHashSet<Integer>();
Collections.addAll(i,j);
System.out.println(i);
HashSet<Integer> hi = new HashSet<Integer>(i);
System.out.println(hi);
LinkedHashSet<Integer> o = new LinkedHashSet<Integer>(hi);
System.out.println(o);
这里的输出我得到:
3,4,5,6,7,8,9
3,4,5,6,7,8,9
3,4,5,6,7,8,9
http://stackoverflow.com/a/2704640/1048330 – tenorsax 2012-02-19 00:56:24
*一般来说*,地图(或设置)使用散列实现具有良好定义的没有秩序。 (尽管* some *实现,例如LinkedHashSet,有一个as-added命令;请参阅[class-level]文档以获得保证(如果有的话)。HashSet和LinkedHashSet文档中讨论了该行为。) – 2012-02-19 01:02:06
Behrang在说这是巧合。主要从整数哈希码保持顺序的事实。尝试向哈希集添加更多的数字以及更大的数字,并查看是否保留了元素的顺序。 – 2012-02-19 01:15:32