0

我被这个问题困住了,我不知道我的代码有什么问题,请帮助我。我得到error java.lang.nullpointerexception了这个代码:

List<DataPoint> listPoints;
if((listPoints = hashMap.get(h)) == null) {
    listPoints = new ArrayList<DataPoint>();
    DataPoint point = new DataPoint((int)songId, i);
    listPoints.add(point);
    hashMap.put(h, listPoints);
}
4

3 回答 3

0

如果您从其他线程加载 HashMap,则在使用它时它可能仍然为空。h 也可能为空。多一点细节会很好

于 2013-05-28T18:53:05.937 回答
0
if((listPoints = hashMap.get(h)) == null)
{
    listPoints = new ArrayList<DataPoint>();
    DataPoint point = new DataPoint((int)songId, i);
    listPoints.add(point);
    hashMap.put(h, listPoints);
}

从该片段中,您将获得的唯一行NullPointerExceptionhashMap.get()andhashMap.put()调用。我敢打赌,它hashMap没有被初始化,因此是null. 所以,当你打电话时hashMap.get(),你会得到你的例外。

于 2013-05-28T18:54:06.920 回答
0

您正在使用的 HashMap(例如 ConcurrentHashMap)的实现可能不接受空键 - 如果 h 为空,那么这将导致 NullPointerException。

于 2013-05-28T20:36:23.507 回答