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

如何展示链表各元素数据?当前仅显示对象地址需输出指定属性

嘿,这个问题我太熟啦!你看到的mykitchen.Alimento@10a6cf9e其实是Java对象默认的toString()方法输出,它只会显示类名和对象的内存哈希码。要改成你想要的name:... quantità:...格式,只需要在你的Alimento类里重写toString()方法就行啦。

解决方法:重写Alimento类的toString()方法

首先得说清楚原因:Java里所有类都继承自Object类,而Object自带的toString()默认实现就是返回类名@十六进制哈希码——这就是你看到那串奇怪字符的根源。要自定义显示格式,我们只需要在Alimento类里覆盖这个方法。

具体代码示例

假设你的Alimento类有name和quantità两个属性,直接在类里加这段核心代码就行:

public class Alimento {
    private String name;
    private int quantità; // 要是你用的是浮点数就改成double,灵活调整

    // 这里放你的构造方法、getter/setter方法,这些你应该已经写好了

    // 核心:重写toString()方法
    @Override
    public String toString() {
        // 用String.format可以让格式更规整
        return String.format("name:%s quantità:%d", this.name, this.quantità);
    }
}

怎么验证效果?

当你遍历链表输出元素的时候,直接打印对象就行,比如:

LinkedList<Alimento> listaAlimenti = new LinkedList<>();
// 先往链表加几个Alimento对象
listaAlimenti.add(new Alimento("Pasta", 500));
listaAlimenti.add(new Alimento("Olio", 100));

// 遍历输出
for (Alimento alimento : listaAlimenti) {
    System.out.println(alimento); // 现在会输出你想要的格式啦!
}

额外小技巧

  • 如果quantità是浮点数(比如公斤、升),可以把%d改成%.2f来保留两位小数,让输出更规范:
    return String.format("name:%s quantità:%.2f", this.name, this.quantità);
    
  • 要是用的是Java 15及以上版本,还可以用文本块来写更清爽的格式:
    @Override
    public String toString() {
        return """
               name: %s
               quantità: %d
               """.formatted(this.name, this.quantità);
    }
    
    这样每个属性占一行,可读性拉满~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:29:18