这是一个旧代码,正在调试它。
我有一个 Map
(myMap),大小为 2(当然)。键为 null
和 1
。
SortedSet mySet = new TreeSet();
mySet.addAll(myMap.keySet());
Iterator mySetIterator = mySet.iterator();
while (mySetIterator.hasNext()) {
Object newObj = mySetIterator.next();
Object mapObj = myMap.get(newObj);
}
此 while
循环仅迭代一次。我不确定这里出了什么问题。有什么问题吗?
请帮助我。提前致谢。
更新:
现在我在 mySet.addAll(myMap.keySet());
<Oct 18, 2011 12:36:21 PM IST> <Error> <> <BEA-000000> <java.lang.NullPointerException
at edu.emory.mathcs.backport.java.util.TreeMap.compare(TreeMap.java:934)
at edu.emory.mathcs.backport.java.util.TreeMap.put(TreeMap.java:97)
at edu.emory.mathcs.backport.java.util.TreeSet.add(TreeSet.java:149)
at java.util.AbstractCollection.addAll(AbstractCollection.java:318)
at edu.emory.mathcs.backport.java.util.TreeSet.addAll(TreeSet.java:165)
最佳答案
请检查关键对象上的compareTo 方法。
如果键对象的compareTo方法表明两个键对象比较相同,则键集将只有一个值,因为Set不允许重复。您正在使用 Treeset 来存储您的键,因此您的compareTo 方法可能存在问题。
请将完整代码贴在上下文中,以便正确定位问题。
关于java - Map.keySet() 和 Set.addAll 抛出 NullPoniterException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7770509/