HashSet排序算法,1-9位数

时间:2014-10-18 18:55:22

标签: 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 (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]

1 个答案:

答案 0 :(得分:5)

HashSet上的迭代顺序取决于三个因素:

  1. Integer#hashCode()
  2. 的实施
  3. HashSet
  4. 中哈希表的大小
  5. 对HashSet进行迭代的实现
  6. 观察到的行为只是巧合。