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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 石德志 黑马帝   /  2012-2-26 22:12  /  1466 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 石德志 于 2012-2-26 23:05 编辑
  1. package day2;

  2. import java.util.HashMap;
  3. import java.util.Iterator;
  4. import java.util.Map;
  5. import java.util.Set;

  6. public class GenericTest2 {

  7.         /**
  8.          * @param args
  9.          */
  10.         public static void main(String[] args) {
  11.                 // TODO Auto-generated method stub
  12.                 HashMap<String,Integer> hm = new HashMap<String,Integer>();
  13.                 hm.put("sdz", 23);
  14.                 hm.put("zhq", 22);
  15.                 hm.put("lhm",30);
  16.                 hm.put("zxx",33);
  17.                 Set<Map.Entry<String, Integer>> setEntry = hm.entrySet();

  18.                 Iterator it = setEntry.iterator();
  19.             while(it.hasNext()){
  20.                     System.out.println(((Map.Entry<String, Integer>) it.next()).getKey()+((Map.Entry<String, Integer>) it.next()).getValue());
  21.             }
  22.         }

  23. }
  24. /*打印结果为
  25. sdz33
  26. lhm22
  27. */
复制代码
为什么没能打印出集合里的全部内容,求解释

5 个回复

倒序浏览
问题出在while 循环的输出语句上面:
  System.out.println(((Map.Entry<String, Integer>) it.next()).getKey()+((Map.Entry<String, Integer>) it.next()).getValue());
不要再一个输出语句中使用两个it.next()方法,第二个next()又往后面取了一次值啊,

回复 使用道具 举报
Iterator<Map.Entry<String, Integer>> it = setEntry.iterator();
            while(it.hasNext()){
                    Map.Entry<String, Integer> entry = it.next();
                    System.out.println(entry.getKey()+" "+entry.getValue());
                   
            }

多谢改了代码后问题解决
回复 使用道具 举报
李晓俊 发表于 2012-2-26 22:30
问题出在while 循环的输出语句上面:
  System.out.println(((Map.Entry) it.next()).getKey()+((Map.Entry) ...

Iterator<Map.Entry<String, Integer>> it = setEntry.iterator();
            while(it.hasNext()){
                    Map.Entry<String, Integer> entry = it.next();
                    System.out.println(entry.getKey()+" "+entry.getValue());
                   
            }

多谢改了代码后问题解决
回复 使用道具 举报
不能写成it.next(),因为每使用一次,它就指向了下一个元素。
可以使用高级for循环输出
           HashMap<String,Integer> hm = new HashMap<String,Integer>();
                hm.put("sdz", 23);
                hm.put("zhq", 22);
                hm.put("lhm",30);
                hm.put("zxx",33);
               
                //System.out.println(hm);
               
                for(Entry<String, Integer> me : hm.entrySet())
                {
                        System.out.println(me.getKey()+"::"+me.getValue());
                }
回复 使用道具 举报
本帖最后由 马胜平 于 2012-2-26 22:51 编辑
  1.         public static void main(String[] args) throws IOException {
  2.         HashMap<String,Integer> hm = new HashMap<String,Integer>();
  3.         hm.put("sdz", 23);
  4.         hm.put("zhq", 22);
  5.         hm.put("lhm",30);
  6.         hm.put("zxx",33);
  7.         Set<Map.Entry<String, Integer>> setEntry = hm.entrySet();

  8.         Iterator it = setEntry.iterator();
  9.     while(it.hasNext()){
  10.             Map.Entry<String, Integer> enty=(Entry<String, Integer>) it.next();
  11.             System.out.println(enty.getKey()+enty.getValue());
  12.             
  13.     }
  14. }
复制代码
很明显你写错了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马