HashMap 是无序的 为什么用Iterator 迭代出来时每次的顺序都一样 10
1个回答
展开全部
这里的无序,不是随机的概念。无序是说里面的元素并不是按照某一种特定规则排列的。但是你终归还要有一个顺序的。
举个例子,你每天去吃饭要排队,假设就10个人,这10个人就是无序的,每天来的顺序是不固定的,但是一旦排好后,你迭代一次就是读取一遍这个排好的对,每次肯定都是一样的呀,只要这10个人不变,顺序就是一样的。一旦有人走,再有人来,顺序就不一定是什么了。
举个例子,你每天去吃饭要排队,假设就10个人,这10个人就是无序的,每天来的顺序是不固定的,但是一旦排好后,你迭代一次就是读取一遍这个排好的对,每次肯定都是一样的呀,只要这10个人不变,顺序就是一样的。一旦有人走,再有人来,顺序就不一定是什么了。
更多追问追答
追问
1、
map.put("3", "");
map.put("4", "");
map.put("1", "");
map.put("2", "");
2、
map.put("4", "");
map.put("3", "");
map.put("2", "");
map.put("1", "");
1和2改变了 put的顺序但是输出的顺序都是
4
2
1
3
感觉你理解的不对吧
追答
计算机不是大自然,他的hash是按照一定算法来实现的,不是像你说的就大家都是以大堆,就是无序的。他必须有一个顺序,不然你怎么迭代输出,只是这个顺序是按照一定算法生成的,不是按照关键字的大小生成的。最简单的算法就是取模运算,比如都%2,这样所有偶数对于他来说是一样的,所有奇数对他来说也是一样的。根据模的不同,出来的顺序就不一样了。你这个测试什么也说明不了。只能说明,1,2,3,4他们没有冲突。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询