黑马程序员技术交流社区
标题:
Map集合
[打印本页]
作者:
ㄗs:/|丶hearts
时间:
2013-6-22 11:49
标题:
Map集合
本帖最后由 ㄗs:/|丶hearts 于 2013-6-29 10:54 编辑
无论Map集合放入时的顺序如何 为啥遍历取出来的顺序都是一样的? 不管放入的顺序是什么样 遍历取出时都是[d=53, b=23, c=33, a=53] 这样的顺序
Map m = new HashMap();
m.put("a", 53);
m.put("b", 23);
m.put("d", 53);
m.put("c", 33);
复制代码
作者:
蚂蚁搬家
时间:
2013-6-22 12:44
看你用啥样的集合了,不同集合内部有不同的存储数据结构,排序规则自然不一样,遍历出来的顺序和存入的顺序是不一致的
作者:
神之梦
时间:
2013-6-22 15:35
HashMap,底层是哈希表数据结构,元素存入后,就有了自己对应的hash值,遍历时,就以Hash值的顺序来依次显示的,所以不管你怎么更改存入顺序,只要你不改变存入的元素,hash值就不会变,遍历结果也不会变
作者:
ㄗs:/|丶hearts
时间:
2013-6-22 19:21
追问: 遍历结果是
hash值:81---map:d=53
hash值:117---map:b=23
hash值:66---map:c=33
hash值:84---map:a=53
hashmap不是按hash值的 自然顺序来存取的吗?
作者:
神之梦
时间:
2013-6-28 14:55
ㄗs:/|丶hearts 发表于 2013-6-22 19:21
追问: 遍历结果是
hash值:81---map:d=53
hash值:117---map:b=23
给楼主找到篇文章,可以看下
http://alex09.iteye.com/blog/539545
作者:
gzbbxu
时间:
2013-6-28 17:12
hashmap类是散列映射并不保证它的元素顺序.因此,元素加入散列映射的顺序并不一定是它们被迭代函数读出的顺序.
用LinkedHashMap,可以保证迭代输出的顺序和输入的一样
如果想让你的元素按照自然ASCII顺序,可以考虑用TreeSet..
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2