HashSet实现是无序的测试

来源:互联网 发布:mac 如何查看隐藏文件 编辑:程序博客网 时间:2024/04/27 19:04

HashSet存入的元素是不可重复的;无序的,此处就无序进行测试

jdk版本:1.7

测试1:

Random rand = new Random(47);
Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < 1000; i++) {
set.add(rand.nextInt(30));
}
System.out.println(set);
}
   

输出结果:[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]

测试2:

Random rand = new Random(47);

Set<Integer> set = new HashSet<Integer>();
for (int i = 0; i < 1000; i++) {
set.add(rand.nextInt(1100));
}
System.out.println(set);

}

输出结果:[1024, 3, 4, 1028, 1030, 6, 1031, 7, 9, 1033, 1034, 11, 1035, 1036, 12, 1037, 1039, 16, 1041, 1042..............

由此结果可以看出测试1的结果看似有序;其实只是Hash Code的算法上的巧合;在小范围内给人以有序的假象;

而在看测试二的结果可以看出不是按照普通的升序排列;也并不是无序;而是按照Hash Code值进行的排序;


注:测试中Random(47)中的47为种子;不影响输出的随机数范围。

1 0