【发布时间】:2013-04-02 12:47:53
【问题描述】:
我在执行 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);
}
}
}
//剩下的空代码...
来自 cmets 的更新:例外情况是
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)
【问题讨论】:
-
哪一行抛出异常?你为什么使用
mapOfSets.get(key)? -
不是答案,而是观察。您可以使用
if(boolean)。所以你也可以(并且应该)写if (!mapOfSets.isEmpty()) -
而且你绝对不需要做那个测试 -
mapOfSets.isEmpty() == false。 -
我怀疑由于您根本没有显示的代码而引发了异常。您发布的代码不能抛出此异常。
-
根据命名约定,你的类应该命名为
MyDatabase而不是myDatabase
标签: java foreach hashmap hashset