You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java哈希表调用Entrada.setKey报this.table[...]为null空指针异常

空指针异常成因

触发异常的核心原因是if分支的判断逻辑与后续操作冲突,结合Java的数组初始化特性,具体原因如下:

  • 你在构造函数中执行this.table= new Entrada [capacidad];仅创建了长度为100的Entrada类型数组,Java中对象类型的数组初始化后,每个元素的默认值都是null,不会自动生成对应类的实例
  • 你的if判断条件为if (table[(position + i * i) % capacidad] == null),即只有数组对应位置为空时才会进入分支,进入分支后你直接对这个null元素调用setKey方法,自然会触发空指针异常

修复方案

你可以根据业务需求选择以下两种方案:

方案1(适配哈希表插入场景,更推荐):空位置先创建实例再赋值

如果你的逻辑是找到空的哈希桶后插入新元素,修改代码如下:

// 提前计算下标避免重复计算
int index = (position + i * i) % capacidad;
if (table[index] == null) {
    // 先创建Entrada实例再赋值
    Entrada newEntry = new Entrada();
    newEntry.setKey(clave);
    newEntry.setValue(valor);
    table[index] = newEntry;
    check = true;
}

方案2:调整判断逻辑,仅修改已存在的元素

如果你的需求是修改已有哈希桶的内容,把if的判断条件取反即可:

int index = (position + i * i) % capacidad;
if (table[index] != null) {
    table[index].setKey(clave);
    table[index].setValue(valor);
    check = true;
}

内容的提问来源于stack exchange,提问作者Axitas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 11:54:03