簡體   English   中英

從Java中的其他類的對象列表中獲取對象列表

[英]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.mapEngine 就像是:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM