编程思想中的一道例题:代码差不多如下
public class SetOfInteger { public static void main(String[] args) { Random random=new Random(47); Set<Integer>intset=new HashSet<Integer>(); for(int i=0;i<10000;i++){ intset.add(random.nextInt(30)); } System.out.println(intset); } }
输出结果:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
书上说它的输出顺序应该是无序的。而且书上的结果输出结果也是无序的,但是我的输出是有序的,运行了好几次结果都是有序的。
HashSet到底是有序还是无序的啊?
hash是无须的.或者说是不保证有序的.
重新运行很多次,hashset的输出结果都是进行排序了的,那hashset是怎么做到对结果的有顺序输出的呢,它并没有像treeset实现了Comparable接口
@甜甜咿呀咿呀哟: 是有他自己的顺序.但这个顺序是hash的顺序.不一样的哈希算法.顺序肯定也是不一样的.
而且有序输出跟有序存储是2回事.
你需要百度下:数据结构,存储结构.还有hash键值对.总的来说你缺的太多.别一下直接想这么深的问题.先从数据结构开始学.
@吴瑞祥: thank u 会努力学习的
这不就是无序么。
你插入的是随机,比如1,3,5,0,2;
而输出是:0,1,2,3,5;这不就是无序么。
无序指的是和你插入的顺序不一致
懂了。那hashset是会对结果进行一个排序吗