我有几个对象说:Car,Auto和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);
如果我不清楚,请告诉我。
答案 0 :(得分:1)
您需要为每个汽车创建一个新的carList
,如果您重复使用相同的汽车将拥有相同的汽车列表。
答案 1 :(得分:0)
您只提取carList
一次并在迭代中设置相同的carList
。每次根据车型提取carList
,然后相应地设置。
答案 2 :(得分:0)
您需要为每carList
填写auto
。
这意味着您的服务/方法需要接受type
参数,该参数返回Car
的所有type
个对象,您必须在autos
内的循环内调用它。
for (Auto auto : autos) {
AutoCar ac = new AutoCar();
ac.setType(auto.getType());
ac.setCars(carService.getCarsByType(auto.getType())); //<-- your service/method call here
acList.add(ac);
}