我正在尝试将2D链表数组设置为:
private LinkedList<Integer>[] adjLst;
graph(int n){
noOfNodes = n-1;
for(int i=0;i<=noOfNodes;i++){
adjLst[i] = new LinkedList<Integer>();
}
}
但是,当我在我的主要课程中称之为:时
graph g =new graph(13);
它正在引发NullPointerException?
您从未初始化过adjLst
,因此它仍然具有默认值null
。你需要这样的东西:
adjLst = new LinkedList<Integer>[noOfNodes + 1];
for (int i = 0; i <= noOfNodes; i++) {
adjLst[i] = new LinkedList<Integer>();
}
请注意,现在还不清楚为什么要从n
中减去1,然后上升到并包括这个值。我会发现这更容易理解:
// Note: fixed case of class. Please follow Java naming conventions
Graph(int n){
adjLst = new LinkedList<Integer>[n];
for (int i = 0; i < n; i++) {
adjLst[i] = new LinkedList<Integer>();
}
}