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的迭代器在输出时“不保证有序”,但也不是“保证无序”。也就是说,输出时有序也是允许的,但是你的程序不应该依赖这一点。
作者:隔壁老郭
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
Java入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 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代理技术深度解析与实战指南