如何展示链表各元素数据?当前仅显示对象地址需输出指定属性
嘿,这个问题我太熟啦!你看到的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
相关产品推荐
相关产品推荐

