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
相关产品推荐
相关产品推荐

