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

Java自定义HashTable类Display方法输出类名@哈希值而非整数值问题

问题根本原因

Java中直接打印自定义类对象时,默认会调用父类java.lang.Object的toString()方法,该方法返回值格式为类名@16进制哈希码,就是你看到的DataItem@xxxx格式的输出,属于没有自定义对象序列化逻辑的正常表现,不是代码运行错误。

解决方案

有两种常用的修复方式,任选其一即可:

方案1:修改哈希表打印逻辑

直接修改DisplayHashTable方法中的打印语句,不直接打印DataItem对象,改为打印其存储的键值:

// 原代码
// System.out.print(this.HashArray[i] + "  ");
// 修改后代码
System.out.print(this.HashArray[i].GetKey() + "  ");

这个方案修改成本最低,无需改动其他类代码。

方案2:重写DataItem类的toString()方法

在你的DataItem类中添加toString方法的重写逻辑,后续所有直接打印DataItem对象的场景都会自动输出你定义的内容:

public class DataItem {
    // 你原有DataItem类的其他代码保持不变
    // 新增如下方法即可
    @Override
    public String toString() {
        // 直接返回键的字符串形式即可,有其他需要展示的字段也可以拼接在这里
        return String.valueOf(GetKey());
    }
}

这个方案扩展性更好,后续其他场景需要打印DataItem时不需要重复修改打印逻辑。

额外优化提示

你当前的DisplayHashTable方法中,非空元素用print不换行,空元素用println换行,会导致输出格式混乱,可以统一成每行打印固定数量的元素,或者每次判断完元素后统一换行。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 19:54:01