【问题标题】:Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference尝试在空对象引用上调用虚拟方法“boolean java.util.ArrayList.add(java.lang.Object)”
【发布时间】:2023-03-24 18:25:01
【问题描述】:

我正在尝试使用来自旧哈希映射的 arraylist 构建新哈希映射,但出现此错误

错误:

ava.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference

我知道这是一些初始化错误,但无法捕捉到它

代码

  nMap = new HashMap<String, ArrayList<Integer>>();
        for (String type: allTypes) {
            if (oData.get(type).size() > 0) {
                    arraySort(oData.get(type));
                    nData.get(type).add(fData.get(type).get(0).value);
               }
        }

OData 是旧的哈希图,肯定包含数据...

【问题讨论】:

  • cData 不包含type (或与此键关联的值为空,但可能性较小)。使用调试器,查看cData 以检查它究竟包含哪些元素。
  • cData.get(type) 返回空值
  • 地图包含空元素,您必须在其中“放”一些东西。
  • 是的,但是如何添加第一个类型,然后将相应的数组列表更新到每个类型

标签: java arraylist hash hashmap


【解决方案1】:

您可以使用以下代码。

if (nData.get(type) == null) {
    nData.put(type, new ArrayList<>());
}
nData.get(type).add(fData.get(type).get(0).value);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2018-07-24
    • 2017-06-02
    • 1970-01-01
    相关资源
    最近更新 更多