执行printAll时,我一直在努力解决java.util.NoSuchElementException错误。
public class myDatabase {
Map<String, HashSet<Integer>> mapOfSets = new HashMap<String, HashSet<Integer>>();
void printAll() {
if (mapOfSets.isEmpty() == false)
{
for (String key : mapOfSets.keySet())
{
System.out.println(key);
//print the set
for (HashSet<Integer> id : mapOfSets.values() )
System.out.println(id);
}
}
}
//其余的空代码...
评论更新:例外
java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:809)
at java.util.HashMap$KeyIterator.next(HashMap.java:841)
at StudentDatabase.report(myDatabase.java:29)
at DatabaseRun1.main(DatabaseRun1.java:52)
答案 0 :(得分:1)
如果我了解您要做的事情,那么您最好使用entrySet
for(Map.Entry<String, HashSet<Integer>> entry : mapOfSets.entrySet()) {
String key = entry.getKey();
HashSet<Integer> value = entry.getValue();
// Print it
}
我看不出这段代码如何产生NoSuchElementException
答案 1 :(得分:0)
你应该改变:
for (HashSet<Integer> id : mapOfSets.values() )
System.out.println(id);
到
for (Integer i : mapOfSets.get(key)) {
System.out.println(i);
}
或(正如@JonSkeet指出的那样)
System.out.println(mapOfSets.get(key));
基本上,您正在尝试在关键位置打印地图而不是地图内的设置。