A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ㄗs:/|丶hearts 中级黑马   /  2013-6-22 11:49  /  1326 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 ㄗs:/|丶hearts 于 2013-6-29 10:54 编辑

无论Map集合放入时的顺序如何  为啥遍历取出来的顺序都是一样的? 不管放入的顺序是什么样 遍历取出时都是[d=53, b=23, c=33, a=53] 这样的顺序
  1. Map m = new HashMap();

  2. m.put("a", 53);
  3. m.put("b", 23);
  4. m.put("d", 53);
  5. m.put("c", 33);
复制代码

评分

参与人数 1技术分 +1 收起 理由
Just_Only + 1 赞一个!

查看全部评分

5 个回复

倒序浏览
看你用啥样的集合了,不同集合内部有不同的存储数据结构,排序规则自然不一样,遍历出来的顺序和存入的顺序是不一致的
回复 使用道具 举报
HashMap,底层是哈希表数据结构,元素存入后,就有了自己对应的hash值,遍历时,就以Hash值的顺序来依次显示的,所以不管你怎么更改存入顺序,只要你不改变存入的元素,hash值就不会变,遍历结果也不会变
回复 使用道具 举报
追问: 遍历结果是
hash值:81---map:d=53
hash值:117---map:b=23
hash值:66---map:c=33
hash值:84---map:a=53
hashmap不是按hash值的 自然顺序来存取的吗?
回复 使用道具 举报
ㄗs:/|丶hearts 发表于 2013-6-22 19:21
追问: 遍历结果是
hash值:81---map:d=53
hash值:117---map:b=23

给楼主找到篇文章,可以看下
http://alex09.iteye.com/blog/539545
回复 使用道具 举报
hashmap类是散列映射并不保证它的元素顺序.因此,元素加入散列映射的顺序并不一定是它们被迭代函数读出的顺序.
用LinkedHashMap,可以保证迭代输出的顺序和输入的一样
如果想让你的元素按照自然ASCII顺序,可以考虑用TreeSet..
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马