这是一个旧代码,正在调试它。
我有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)
答案 0 :(得分:1)
请检查Key Objects上的compareTo方法。
如果密钥对象compareTo方法指示两个密钥对象都比较相同,那么密钥集将只有一个值,因为Set不允许重复。您正在使用Treeset存储密钥,因此compareTo方法可能存在问题。
请在上下文中发布整个代码以正确找到问题。
答案 1 :(得分:1)
null
中不可能有SortedSet
,因为此集合需要调用comparTo
方法,所以这必须是可比较的对象/原语
答案 2 :(得分:0)
如果你这样做会怎么样?
Iterator mySetIterator = myMap.keySet().iterator();
while (mySetIterator.hasNext()) {
Object newObj = mySetIterator.next();
Object mapObj = myMap.get(newObj);
}