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

Java中如何正确打印LinkedList存储的Trans交易对象列表?

问题原因与解决方法

错误原因

你拿到的tr是List<Trans>类型的集合对象,不是单个Trans实例。getAccNo()、getTransId()是Trans类的专属方法,集合本身没有这些方法,所以编译器会报"cannot find symbol"错误。

正确打印方式

方式1:增强for循环遍历(最常用)

遍历集合中的每一个Trans对象,再调用对应的getter方法:

List<Trans> tr = nbank.withdraw(accNo, amt);
for (Trans transaction : tr) {
    System.out.println("账号:" + transaction.getAccNo());
    System.out.println("交易ID:" + transaction.getTransId());
    // 按需打印其他交易字段,比如交易金额、时间等
}

方式2:普通for循环(需要索引时使用)

通过索引逐个取出集合中的Trans对象:

List<Trans> tr = nbank.withdraw(accNo, amt);
for (int i = 0; i < tr.size(); i++) {
    Trans transaction = tr.get(i);
    System.out.println("第" + (i + 1) + "笔交易:");
    System.out.println("账号:" + transaction.getAccNo());
    System.out.println("交易ID:" + transaction.getTransId());
}

方式3:Java 8+ Lambda表达式遍历

利用Stream API简化代码:

List<Trans> tr = nbank.withdraw(accNo, amt);
tr.forEach(transaction -> {
    System.out.println("账号:" + transaction.getAccNo());
    System.out.println("交易ID:" + transaction.getTransId());
});

进阶优化:重写Trans类的toString()方法

如果想让打印更简洁,给Trans类重写toString()方法,直接打印对象就能输出所有字段:

public class Trans {
    // 原有属性、getter/setter方法
    
    @Override
    public String toString() {
        return "交易记录{" +
                "账号='" + getAccNo() + '\'' +
                ", 交易ID='" + getTransId() + '\'' +
                ", 金额=" + getAmount() + // 假设存在金额字段
                ", 时间='" + getTransTime() + '\'' + // 假设存在时间字段
                '}';
    }
}

之后直接遍历打印对象即可:

List<Trans> tr = nbank.withdraw(accNo, amt);
for (Trans transaction : tr) {
    System.out.println(transaction);
}
// 或者用Lambda更简洁
tr.forEach(System.out::println);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 08:55:15