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   白嫖老郭  阅读(566)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示