0

当我执行 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)
4

2 回答 2

1

如果我了解您要做什么,最好使用entrySet

for(Map.Entry<String, HashSet<Integer>> entry : mapOfSets.entrySet()) {
    String key = entry.getKey();
    HashSet<Integer> value = entry.getValue();

    // Print it
}

我看不出这段代码如何产生NoSuchElementException

于 2013-04-02T13:01:53.243 回答
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));

本质上,您正在尝试在关键位置打印地图而不是地图内的集合。

于 2013-04-02T12:58:02.650 回答