以下代碼中的語句if (!adjacentNodes.get(nodeId).isEmpty())
有什麼問題?檢查散列表是否包含項目?
這種說法導致了以下消息:
顯示java.lang.NullPointerException
package IN.company;
import java.util.HashMap;
import java.util.HashSet;
public class DiffusionModels {
public int ICModel(int[] seedSet, HashMap<Integer, HashSet<Integer>> adjacentNodes, double p) {
HashSet<Integer> infected = new HashSet();
HashSet<Integer> recentlyInfected = new HashSet();
...
while (recentlyInfected.size() > 0) {
HashSet<Integer> nextActivator = new HashSet<>();
if (!recentlyInfected.isEmpty()) {
for (Integer nodeId : recentlyInfected) {
if (!adjacentNodes.get(nodeId).isEmpty()) {
HashSet<Integer> neighborsOfNode =adjacentNodes.get(nodeId) ;
for (Integer nodeNeighbor : neighborsOfNode) {
if ((Math.random() <= p)&& !(infected.contains(nodeNeighbor))) {
nextActivator.add(nodeNeighbor);
}
}
}
}
}
infected.addAll(recentlyInfected);
recentlyInfected.clear();
recentlyInfected.addAll(nextActivator);
}
return infected.size();
}
}
如果您指定的表達式生成'NullPointerException'那麼肯定是因爲'adjacentNodes.get( nodeId)'返回'null'。特別要注意,'null'是一個完全不同的野獸,從非空引用到一個空的'Map'。 –
謝謝,但我該如何解決它?我用isEmpty函數檢查這個問題,這是錯誤的嗎? – JavaDev
@Timothy Truckle,謝謝,但那個話題對我來說不會有用。 – JavaDev