为什么HashSet是排序的?

shu*_*rok 3 java integer hashset

我正在学习 Java 中的容器,最近我读到 HashSet 没有按顺序提供元素。Integer有趣的是我随机制作的 HashSet 被排序了。当我将其类型更改为Double 时,打印的 HashSet 不再排序。我的问题是:那么 HashSet 对各种类型的工作方式是否不同?

Ada*_*hip 6

HashSet使用HashMap内部。HashMap使用每个对象的hashCode()方法将其元素存储在哈希表中。

对于intand double,它们被自动装箱IntegerDouble类中。当您进行HashSetintS,它使用整型的的hashCode()方法,该方法仅返回int。因此,如果您添加ints,它们将按顺序存储。但是对于doubleDouble 的 hashCode()方法要复杂得多,因为 double 在内存中的表示方式。

  • 这仅适用于某些小范围的整数值。 (2认同)