Java系列问题 —— 为什么HashSet整数型输出是有序的?

范例代码

Collection hs = new HashSet();
hs.add("张三");
hs.add(6);
hs.add("李四");
hs.add(5);
hs.add(1);
hs.add(8);
hs.add("王五");
hs.add(2);
hs.add("周六");
hs.add(4);
hs.forEach(elemt -> System.out.println("value = "+elemt+" , hashCode = " + elemt.hashCode()));

输出结果

从上面输出结果,我们可以看到字符型的输出是无序的,但是整数型的输出确实有序,接下来我们通过整数型数值和字符型数值,来看看输出结果如何。

System.out.println("----整数型数值输出结果----");
Collection Test1 = new HashSet();
for(int i=1;i<=30;i++){
    Test1.add(i);
}
Test1.forEach(elemt -> System.out.println("value = "+elemt+" , hashCode = " + elemt.hashCode()));
		
System.out.println("\n----整数型字符输出结果----");
Collection Test2 = new HashSet();
for(int i=1;i<=30;i++){
    Test2.add(String.valueOf(i));
}
Test2.forEach(elemt -> System.out.println("value = "+elemt+" , hashCode = " + elemt.hashCode()));

输出结果如下图所示

首先我们要知道到是,HashSet集合并不能保证迭代的顺序,也就是说HashSet的迭代器在输出时“不保证有序”,但也不是“保证无序”。也就是说,输出时有序也是允许的,但是你的程序不应该依赖这一点。

猜你喜欢

转载自blog.csdn.net/Rao_Limon/article/details/88879889