黑马程序员技术交流社区

标题: Map中keySet方法的取出键值的顺序 [打印本页]

作者: 山鹰    时间: 2013-6-5 13:20
标题: Map中keySet方法的取出键值的顺序
本帖最后由 孙百鑫 于 2013-6-15 08:36 编辑

Map集合中keySet的取值方式,输出是按什么顺序?既不是输入的顺序,也不值得顺序

public static void main(String[] args) {
               
                Map<String,String> map = new HashMap<String,String>();
               
                        map.put("张三", "20");
                        map.put("李四", "19");
                        map.put("王五", "25");
                        map.put("赵六", "22");
                        //先获取Map集合的所有键的Set集合, keySet();
                        Set<String> keySet = map.keySet();
                        //有了Set集合就获取迭代器
                        for(Iterator<String> it = keySet.iterator(); it.hasNext(); ){
                                //迭代出Map集合的键
                                String key = it.next();
                                //通过Map集合的get方法获取值
                                String value = map.get(key);
                                System.out.println("key" + key + "-->" + "value" + value);
                                
                        }
        }
输出结果:
key赵六-->value22
key张三-->value20
key李四-->value19
key王五-->value25

作者: Jomes    时间: 2013-6-5 13:40
map是无序的,list才是有序的,基础的程序理念。和它的编译器实现有关
如果实现显示用map排序的话,我给个例子你把
代码如下
  1. Map<String, Integer> map = (Map<String, Integer>)new ListOrderedMap();   
  2.        map.put("张三", 20);  
  3.        map.put("李四", 19);   
  4.        map.put("王五", 20);        
  5.    for (String key : map.keySet()) {   
  6.         System.out.println(map.get(key));
  7.     }
复制代码
但是我不建议这么用,效率不高。map的维护成本本身是高于array(list)的,如果再维护map本身的有序化,成本会是加倍,他涉及到实际数据存在,以及用额外的列表去把keys做序列化索引。 呵呵个人观点。


作者: 袁梦希    时间: 2013-6-5 13:46
Jomes 发表于 2013-6-5 13:40
map是无序的,list才是有序的,基础的程序理念。和它的编译器实现有关
如果实现显示用map排序的话,我给个例 ...

个人观点很好   我喜欢自己有研究的人
作者: 孙百鑫    时间: 2013-6-15 07:21
楼主问题解决的话.请改主题分类.该成已解决哦
作者: 李九一    时间: 2013-6-15 07:33
map是无序的,list才是有序的
作者: 山鹰    时间: 2013-6-15 08:29
孙百鑫 发表于 2013-6-15 07:21
楼主问题解决的话.请改主题分类.该成已解决哦

怎么改  原来改过  现在在哪里改
作者: 孙百鑫    时间: 2013-6-15 08:35
山鹰 发表于 2013-6-15 08:29
怎么改  原来改过  现在在哪里改

可能论坛更新出现点小问题.我帮您改了:)




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2