我有實體類列表:public class Entity{ private long id; private List<InnerEnity> data; public long getId() { return id; } public List<InnerEnity> getData() { return data; }}這是 InnerEnity 類public class InnerEnity { private long id; private String data; public long getId() { return id; } public String getData() { return data; }}我需要的是 InnerEnity id 列表。為了解決這個問題,我正在嘗試這樣的事情:-List innerEnityIds = listOfEnity.stream().map(sys -> sys.getData().stream().map(obj->obj.getId().collect(Collectors.toList())));
2 回答

慕萊塢森
TA貢獻1810條經驗 獲得超4個贊
在這里你需要flatMap
:
List<Long> innerEnityIds = listOfEnity.stream() // Stream<Entity> .flatMap(sys -> sys.getData().stream().map(InnerEntity::getId)) // Stream<Long> .collect(Collectors.toList()); // List<Long>
或者,您可以將flatMap
步驟分解為flatMap
+ map
:
List<Long> innerEnityIds = listOfEnity.stream() // Stream<Entity> .flatMap(sys -> sys.getData().stream()) // Stream<InnerEntity> .map(InnerEntity::getId) // Stream<Long> .collect(Collectors.toList()); // List<Long>

瀟湘沐
TA貢獻1816條經驗 獲得超6個贊
我認為這可能會奏效(尚未測試):
List<Long> innerEntityIds = listOfEnity.stream() .flatMap(e -> e.getData().stream()) // 1 .map(ie -> ie.getId()) // 2 .collect(Collectors.toList()); // 3
1) 使用 flatMap 將所有內部實體流式傳輸到一個流中 2) 將每個內部實體映射到其 id 3) 將 id 收集到一個列表中
添加回答
舉報
0/150
提交
取消