小编Luk*_*der的帖子

具有较大值的奇怪HashSet行为

我在Java中使用已实现的HashSet找到了一个(对我来说)无法解释的行为.我像这样实现了HashSet并用列表的值填充它.

HashSet<Integer> set = new HashSet<Integer>(list);
Run Code Online (Sandbox Code Playgroud)

我首先使用包含数字0到9的数字列表来填充HashSet:

示例: {1,0,5,9,6,7,3,1,3,6,1,5,1,3,4,9,9,7}
输出: [0, 1, 3, 4, 5, 6, 7, 9]

由于HashSets通常以递增的排序顺序返回值,直到现在一切正常.但是当我开始使用包含更大vaues的列表时,它会以奇怪的方式开始回馈值:

示例:{67,1,122,19,456,42,144,42,3,34,5,5,42}
输出:[1, 34, 67, 3, 5, 456, 42, 144, 19, 122]

我读到了一些关于这取决于这里的内部哈希算法:Java HashSet以奇怪的顺序显示列表,总是从3开始,但这更令人困惑,因为我使用完全相同的HashSet只是具有不同的值.

可以请有人解释我为什么会这样吗?

java sorting list hashset

-2
推荐指数
1
解决办法
43
查看次数

标签 统计

hashset ×1

java ×1

list ×1

sorting ×1