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

Java二维ArrayList添加元素时所有条目重复问题求助

根因分析

Java的集合类存储的是对象的引用而非拷贝,你在ParkingOffice类中将customerList定义为全局成员变量,全程复用同一个实例:每次调用register方法时,都往同一个customerList中添加元素,再将同一个customerList的引用添加到二维列表customers中。最终customers中所有子列表指向的是同一块内存地址,任意修改都会同步到所有子列表,就出现了所有子列表内容完全重复的问题。

修复步骤
  1. 删除ParkingOffice类中冗余的全局customerList成员变量,不需要全局复用这个实例
  2. 修改register方法逻辑,每次注册客户时新建独立的子列表实例:
// 修改后的register方法
public Customer register(String customerId, String name, Address address, String phone) {
    Customer customer = new Customer(customerId, name, address, phone);
    // 每次新建独立的子列表
    List<Customer> subList = new ArrayList<>();
    subList.add(customer);
    this.customers.add(subList);
    // 原代码中的customer.addCustomers()为冗余代码,Customer类无对应方法建议删除
    return customer;
}
  1. 修正测试用例的断言逻辑,你之前直接将List对象和字符串对比会报错,需要先调用列表的toString()方法再对比:
assertEquals("[[ID: 7g8h9i, Name: Jane, Address: 123 Lane, Anaheim, CA 92801, Phone: 987654321], [ID: 4d5e6f, Name: Joe, Address: 123 Lane, Anaheim, CA 92801, Phone: 987654321]]", customers.toString());

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:36:00