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入门到入坟
万水千山总是情,打赏一分行不行,所以如果你心情还比较高兴,也是可以扫码打赏博主,哈哈哈(っ•̀ω•́)っ✎⁾⁾!
浙公网安备 33010602011771号