Java 迭代列表并添加到包含列表的对象

标签 java

我有几个对象说:汽车,汽车和 AutoCar

Car
- String name;
- String origin;

Auto
- String type;

AutoCar
-   String type;
-   List<Car> cars = new ArrayList<Car>();

迭代汽车列表:

List<Car> carList = //fetched from a service or method
List<AutoCar> acList = new ArrayList<AutoCar>();

for(Auto auto : autos){
    AutoCar ac = new AutoCar();
    ac.setType(auto.getType());
    ac.setCars(carList);
    acList.add(ac);
}

我期望结果:

Type = CAR-Type-1
Cars:
name: FORD
origin: US
name: Suzuki
origin: Japan

Type = CAR-Type-2
Cars:
name: Volkswagen
origin: Germany
name: Audi
origin: Germany

Type = CAR-Type-3
Cars:
name: Jaguar
origin: UK
name: Ferrari
origin: Italy

但是我得到的是保留的最后一次迭代......

Cars:
name: Jaguar
origin: UK
name: Ferrari
origin: Italy

适用于所有车型(CAR-Type-1/CAR-Type-2/CAR-Type-3)

我认为我在这一行做错了:

ac.setCars(carList);

如果我不清楚,请告诉我。

最佳答案

您需要为每辆汽车创建一个新的carList,如果您重复使用相同的汽车列表,则每辆汽车将具有相同的汽车列表。

关于Java 迭代列表并添加到包含列表的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29847811/

相关文章:

java - XML 中是否有等效于 setColorFilter() 的方法?

java - Jetty:如何嵌套HandlerWrapper、HandlerList、ContextHandlerCollection、ContextHandler

java - 在 Java 中使用 HashTable 的问题

Java JFrame 失去焦点时显示初始化内容

java - 在 Java 中并行执行依赖任务

java - 单元测试 - 相对路径导致测试失败?

java - XCode 与 Java : how to send and receive files

java - 文件写入jar中的资源文件夹中

java - HQL的插入子句不更新数据库

java - 从 InflaterInputStream 读取并解析结果