2011-02-27 38 views
-1

问候! 我在这里有一个问题,我找不到。Set Iterator&NullPointerException

我在我的DisjSet类代码的最后得到了一个N​​ullPointerException,在sets.put(nodes_iter.next(), null);

我刚刚开始制作keySets的hashMaps等类似的东西,所以我认为可能有些东西我不知道。

感谢每awnser-

这里是代码:

我创建一个新的DisjSet:

DisjSet<T> ds = new DisjSet<T>(theGraph.keySet()); 

这里是theGraph我做的一键设置:

private Map< T, HashSet<Edge> > theGraph = new HashMap< T, HashSet<Edge> >(); 

以下是DisjSet类的相关部分:

import java.util.*; 

public class DisjSet<K extends Comparable<? super K>> 
{ 
     //HashMap containing 1. K itself, 2. Ks parent. K no.2 is null if K has no parent 
    private HashMap<K,K> sets; 

public DisjSet(Set<K> s) 
{ 
    if(s.isEmpty()) 
     throw new IllegalStateException("Empty DisjSet argument"); 

    Iterator<K> nodes_iter = s.iterator(); 

    while(nodes_iter.hasNext()) 
     sets.put(nodes_iter.next(), null); 
} 
(...) 
} 

回答

1

你永远不会初始化“sets”,所以你会得到一个NullPointerException。

顺便说一句:这是一个相同的错误,你有一个earlier this day。做出这样的错误并不可耻,但你应该尝试从答案中学习。

+0

是的,谢谢。我知道......我感到非常惭愧:p。一直盯着我的代码,所以我有点不专心:/ – 2011-02-27 19:33:28

1

由于nodes_iter.hasNext()检查在那里,所以只剩下set为null的唯一可能性。