java中HashSet实现遍历时为什么会出现排序的现象?

Integer ram[] = new Integer[200];
        Set<Integer> integers = new HashSet<>();

        while (integers.size() != 200) {
            int x = (int) (Math.random() * 200) + 1;
            System.out.print(x + " ,");
            integers.add(x);
        }
        System.out.println();
        integers.forEach(x -> System.out.print(x + " ,"));
        System.out.println();
        Iterator<Integer> iterator = integers.iterator();
        int i = 0;
        while (iterator.hasNext()) {
            ram[i] = iterator.next();
            i++;
        }
        Arrays.sort(ram, (o1, o2) -> o2 - o1);
        System.out.println(Arrays.toString(ram));

 

 int的包装类它是个特例:

hashset本身是不保证有序,也不是说没有规则。就是可能多次的运行结果不一定一致,但是他的算法还是有一定的规则的。

HashSet集合并不能保证迭代的顺序,也就是说HashSet的迭代器在输出时“不保证有序”,但也不是“保证无序”。也就是说,输出时有序也是允许的,但是你的程序不应该依赖这一点。

posted on 2020-08-30 12:39  白嫖老郭  阅读(586)  评论(0)    收藏  举报

导航