This question already has answers here:
How is this HashSet producing sorted output?

(5 个回答)


4年前关闭。




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

最佳答案

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

对于 intdouble ,它们是 auto-boxedIntegerDouble 类中。当您创建 HashSetint 时,它​​使用 Integer's hashCode() 方法,该方法只返回 int 。所以如果你添加 int s,它们会被排序存储。但是对于 doubleDouble's hashCode() 方法要复杂得多,因为 double 在内存中的表示方式。

关于java - 为什么HashSet是排序的?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40870096/

10-12 17:38