java - Map.keySet() 和 Set.addAll 抛出 NullPoniterException

标签 java iterator treeset keyset

这是一个旧代码,正在调试它。 我有一个 Map (myMap),大小为 2(当然)。键为 null1

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/

相关文章:

Java 线程亲和性

java - 我无法运行 Android 通知,因为它出现错误

c++ - 可以安全地存储 list::iterator 供以后使用吗?

Java Selenium 多表结构,遍历所有

java - Android 服务完全破坏了设备的性能?

c++ - 如何从 int* 类型的堆分配数组中检索 int[num_elem] 类型的变量?

python - 按给定计数限制生成器值,稍后返回剩余生成器值

自定义包装枚举类型不支持 java.util.TreeSet 集合类型

java - 在 Java 中访问 Treeset 中的下一个元素

Java TreeMap : Retrieving multiple values from a single key