【问题标题】:Displaying the contents of a Map over iterator在迭代器上显示 Map 的内容
【发布时间】:2012-04-19 20:24:52
【问题描述】:

我正在尝试显示我使用迭代器创建的map。 我使用的代码是:

private void displayMap(Map<String, MyGroup> dg) {
Iterator it = dg.entrySet().iterator();   //line 1
while (it.hasNext()) {
    Map.Entry pair = (Map.Entry)it.next();
    System.out.println(pair.getKey() + " = " + pair.getValue());
    it.remove();
   }
}

MyGroup 类,其中有两个字段,分别名为 id 和 name。 我想针对pair.getValue() 显示这两个值。 这里的问题是第 1 行永远不会被执行,也不会抛出任何异常。

请帮忙。

PS:this link上的所有方法我都试过了。

【问题讨论】:

  • 你怎么知道它没有被执行?
  • 我在第一行之后插入了一个 sysout。它没有打印出来。
  • 你确定你的dg对象不为null或不为空?另外,它是“MyGroup”吗?你的类是小写的,这不是一个好主意。
  • @jmort253:很高兴提出来。这是我在这里写代码时的一个错字。
  • 您是否使用过调试器来查看 line1 是否被执行。如果您不想使用调试器,您是否尝试过将 System.out 作为方法的第一行?如果实际调用了 displayMap 方法,则没有理由不执行 //line 1

标签: java map iterator


【解决方案1】:
Map<String, MyGroup> map = new HashMap<String, MyGroup>();  
for (Map.Entry<String, MyGroup> entry : map.entrySet()) {
     System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

使用迭代器

Map<String, MyGroup> map = new HashMap<String, MyGroup>();
Iterator<Map.Entry<String, MyGroup>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
    Map.Entry<String, MyGroup> entry = entries.next();
    System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}

更多迭代信息见this link

【讨论】:

  • 有用的链接。但在这种情况下它没有帮助。再次相同,没有结果。
  • @SunmitGirme 当然不是我在我的电脑上检查过它,它给出了完美的结果。请正确检查。
  • @chandraShekhar:是的,我相信显示地图内容的代码在任何情况下都是正确的。 MyGroup类中的映射一定有问题。
  • @SunmitGirme 猜对了,问题一定出在 MyGroup 类中。
猜你喜欢
  • 2013-08-14
  • 2017-10-08
  • 1970-01-01
  • 2016-01-16
  • 2013-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多