Java中ArrayList打印对象带[]括号,如何正确输出列表内对象全部信息
直接打印ArrayList实例时,会自动调用ArrayList类继承的toString方法,该方法的默认实现是将所有元素的toString返回值用逗号拼接后,外层包裹方括号返回,这就是你看到多余括号的原因。你已经正确重写了Email类的toString方法,只需要避开直接打印列表对象即可。
解决方案
方案1:遍历列表逐个打印(最简单最常用)
你可以直接遍历ArrayList中的每一个Email对象,分别打印即可,打印单个Email对象时会调用你重写的toString方法,不会出现多余括号。
你可以把EmailApp.java中循环里的System.out.println(list);替换为以下代码:
如果仅需要打印当前新增的员工信息:
// 创建对象先暂存 Email newEmployee = new Email(firstName, lastName); list.add(newEmployee); // 直接打印单个对象 System.out.println(newEmployee); System.out.println("------------------------");
如果需要每次新增后打印所有已录入的员工信息:
list.add(new Email(firstName, lastName)); // 遍历全部元素打印 for (Email employee : list) { System.out.println(employee); System.out.println("------------------------"); }
方案2:自定义拼接完整的员工信息字符串
如果你需要把所有员工信息拼接为一个完整字符串用于后续业务逻辑,可以用Java 8+的Stream API快速拼接:
import java.util.stream.Collectors; // 拼接所有员工信息,用分隔符区分 String allEmployeeInfo = list.stream() .map(Email::toString) .collect(Collectors.joining("\n------------------------\n")); // 打印最终结果 System.out.println(allEmployeeInfo);
优化建议
你当前Email类的toString方法返回的内容没有换行,所有字段会挤在同一行,可读性较差,可以修改为:
@Override public String toString() { return "DISPLAY NAME: " + firstName + " " + lastName + "\n" + "COMPANY EMAIL: " + email + "\n" + "MAILBOX CAPACITY: " + mailboxCapacity + "mb"; }
内容的提问来源于stack exchange,提问作者JulianTheProgrammer
相关产品推荐
相关产品推荐

