黑马程序员技术交流社区

标题: 关于Map集合(迭代器)获取全部键值的问题 [打印本页]

作者: ″先森丶玹°    时间: 2013-11-21 22:09
标题: 关于Map集合(迭代器)获取全部键值的问题
  1. public static void keyMethod(){
  2.                 Map<String,String> mh=new HashMap<String,String>();
  3.                
  4.                 mh.put("001", "think1");
  5.                 mh.put("007", "think7");
  6.                 mh.put("004", "think4");
  7.                 mh.put("006", "think6");
  8.                
  9. //                先获取map集合所有键的Set集合,keySet();
  10.                 Set<String> mhSet=mh.keySet();
  11.                
  12. //                获取迭代器
  13.                 for(Iterator<String> it=mhSet.iterator();it.hasNext();){
  14.                
  15. //                有了键就可以通过map集合get方法获取对应的值
  16.                        
  17.                         sop("mh Key....."+it.next()+"\t mh value....."+mh.get(it.next()));
  18.                        
  19.                 }
  20.                
  21.         }
  22. public static void sop(Object obj){
  23.                 System.out.println(obj);
  24.         }
复制代码
输出结果是mh Key.....004         mh value.....think6
mh Key.....007         mh value.....think1
打印键没问题4个,但是打印键和值就出问题了。

作者: 习嘻嘻    时间: 2013-11-21 22:20
sop("mh Key....."+it.next()+"\t mh value....."+mh.get(it.next()));
你一句话里就调用了两次it.next(),当然对不上
作者: 何丛    时间: 2013-11-21 22:23
sop("mh Key....."+it.next()+"\t mh value....."+mh.get(it.next()));
这一句你调用了两次next方法,这两次得到的值是不一样的
建议楼主改成
String temp = it.next();
sop("mh Key....."+temp+"\t mh value....."+mh.get(temp);
作者: ″先森丶玹°    时间: 2013-11-21 22:38
何丛 发表于 2013-11-21 22:23
sop("mh Key....."+it.next()+"\t mh value....."+mh.get(it.next()));
这一句你调用了两次next方法,这两 ...

--刚才研究了下 --改好了--和你说的办法一样 哈哈哈
作者: freehiker    时间: 2013-11-21 23:08
下面两种方式都可以获取Map中的键值对:
public static void main(String[] args) {
                Map<String, String> map = new HashMap<String, String>();
                map.put("001", "a");
                map.put("002", "b");
                map.put("003", "c");
                map.put("004", "d");

                Set<String> set = map.keySet(); //方式一
                Set<Map.Entry<String, String>> entrySet = map.entrySet(); //方式二
                for (Iterator<String> it = set.iterator(); it.hasNext();) {
                        String str = it.next();
                        System.out.println("key:" + str + "  value:" + map.get(str));
                }
                System.out.println("============美丽的分割线===========");
                for (Iterator<Map.Entry<String, String>> it = entrySet.iterator(); it
                                .hasNext();) {
                        Map.Entry<String, String> mapEntry = it.next();
                        System.out.println("key=" + mapEntry.getKey() + "  value="
                                        + mapEntry.getValue());
                }
        }




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