Java 哈希集排序算法,1-9位
我谈到了一个奇怪的话题:为什么HashSet类按升序排列1到9位数字,而其余的数字不是按升序排列的。我知道HashSet关注的是速度。但是如果有人能解释为什么只对1到9的数字进行排序,我将不胜感激 例如:Java 哈希集排序算法,1-9位,java,algorithm,hashset,Java,Algorithm,Hashset,我谈到了一个奇怪的话题:为什么HashSet类按升序排列1到9位数字,而其余的数字不是按升序排列的。我知道HashSet关注的是速度。但是如果有人能解释为什么只对1到9的数字进行排序,我将不胜感激 例如: public static void main(String[] args) { int count[] = {3, 2, 3, 7, 6}; Set<Integer> set = new HashSet<>(); for
public static void main(String[] args) {
int count[] = {3, 2, 3, 7, 6};
Set<Integer> set = new HashSet<>();
for (int i = 0; i < 5; i++) {
set.add(count[i]);
}
System.out.println(set);
}
Output: [2, 3, 6, 7]
在int count[]的情况下{44,32,87,32,11};
输出:[32、87、11、44]哈希集上的迭代顺序将取决于三个因素: 整数编码的实现 哈希集中哈希表的大小 HashSet上迭代的实现
观察到的行为只是一个巧合。您尝试过其他数字集吗?主要是巧合。您采用的随机巧合可能与整数哈希代码的实现、哈希集中哈希表的大小以及哈希集上迭代的实现有关,假设它暗示了一些关于一位数的信息。这只是一个巧合。请注意,鉴于Integer.hashCode的实现和HashSet的默认存储桶大小,显示这种排序行为的应该是0到15(含0到15)范围内的任何数字。值得注意的是,记录了1和2,3取决于实现。