java - 为什么 HashSet 是排序的?

标签 java integer hashset

<分区>

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

最佳答案

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

对于 intdouble,它们是 auto-boxed进入 IntegerDouble 类。当您创建 intHashSet 时,它使用 Integer's hashCode()方法,它只返回 int。因此,如果您添加 int,它们将被存储排序。但是对于 doubleDouble's hashCode()方法要复杂得多,因为 double 在内存中的表示方式。

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

相关文章:

java - 得到错误的输出?我的编码可能已关闭?

java - 正则表达式匹配另一个单词第一次出现的第二个单词

java - 为什么相同数据上 `DataOutputStream` 和 `ObjectOutputStream` 的输出不同?

c# - 如何将字符串的特定字符解析为整数?

c# - 用于唯一字符的 HashSet

java - Hadoop 与 Spring 抛出 java.lang.AbstractMethodError 异常

python - 将类型 Int64Index 转换为 Python 中的整数索引

java - 两组大数 - 它们的总和的分数

c# - 使用 base.Any(..) 警告是 : 'HashSet' does not contain a definition for 'Any'

java - HashMap 或哈希集?