HashMap 是无序的 为什么用Iterator 迭代出来时每次的顺序都一样 10

 我来答
abcd1236386
2014-05-14 · TA获得超过774个赞
知道小有建树答主
回答量:539
采纳率:0%
帮助的人:526万
展开全部
这里的无序,不是随机的概念。无序是说里面的元素并不是按照某一种特定规则排列的。但是你终归还要有一个顺序的。
举个例子,你每天去吃饭要排队,假设就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他们没有冲突。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式