黑马程序员技术交流社区

标题: 关于泛型的一个问题 [打印本页]

作者: 石德志    时间: 2012-2-26 22:12
标题: 关于泛型的一个问题
本帖最后由 石德志 于 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. */
复制代码
为什么没能打印出集合里的全部内容,求解释
作者: 李晓俊老师    时间: 2012-2-26 22:30
问题出在while 循环的输出语句上面:
  System.out.println(((Map.Entry<String, Integer>) it.next()).getKey()+((Map.Entry<String, Integer>) it.next()).getValue());
不要再一个输出语句中使用两个it.next()方法,第二个next()又往后面取了一次值啊,


作者: 石德志    时间: 2012-2-26 22:43
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:43
李晓俊 发表于 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());
                   
            }

多谢改了代码后问题解决
作者: 冯兵兵    时间: 2012-2-26 22:45
不能写成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:49
本帖最后由 马胜平 于 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. }
复制代码
很明显你写错了




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