[英]Get list of objects from List of Object of other class in Java
我想使用現有列表中的某些屬性從現有對象列表生成對象列表。
例如,
我有List<Car> cars
public Class Car {
Integer carId;
String carName;
Integer engineId;
String engineName;
Double engineCapacity;
}
Class Engine {
Integer engineId;
String engineName;
Double engineCapacity;
}
我想從現有的汽車列表中創建List<Engine> engines
,這樣對於每個Car對象,列表中將有一個引擎對象,其中所有屬性都使用汽車列表填充。 這是否可以使用Java 8 stream / Lambda。
實際上,將汽車列表映射到他們的引擎列表應該已經足夠了,因為我已經填充了它們。
List<Engine> = cars.stream().map(Car::getEngine).collect(Collectors.toList());
您應該知道,這些引擎是對汽車對象中引擎的引用。 所以通過汽車改變他們的屬性也應該反映在引擎列表中。
如果你想擁有不同的引擎對象(但保持與汽車引擎相同的值),你應該嘗試kocko的答案。
這可能使用Java 8流嗎?
當然。 您只需要將每個Car
都.map
到Engine
。 就像是:
List<Engine> = cars.stream()
.map(x -> new Engine(x.getEngineId(), x.getEngineName(), x.getEngineCapacity())
.collect(Collectors.toList());
當然,您必須為Engine
類提供Engine(Integer engineId, String engineName, Double engineCapacity)
構造函數。
您可以使用已經描述的流(這是一個優雅的解決方案)
List<Engine> = cars.stream().map(Car::getEngine).collect(Collectors.toList());
或者您只需創建一個新列表,遍歷舊列表並將元素添加到新列表中:
List<Engine> l = new LinkedList();
for (Car car : cars) {
l.add(car.getEngine());
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.