我在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只是具有不同的值.
可以请有人解释我为什么会这样吗?