Er *_*pra 3 java collections java-8 java-stream
我有实体类列表:
public class Entity
{
private long id;
private List<InnerEnity> data;
public long getId() {
return id;
}
public List<InnerEnity> getData() {
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
这是 InnerEnity 类
public class InnerEnity
{
private long id;
private String data;
public long getId() {
return id;
}
public String getData() {
return data;
}
}
Run Code Online (Sandbox Code Playgroud)
我需要的是 InnerEnity id 列表。为了解决这个问题,我正在尝试类似的事情:-
List innerEnityIds = listOfEnity.stream().map(sys -> sys.getData().stream().map(obj->obj.getId().collect(Collectors.toList())));
Run Code Online (Sandbox Code Playgroud)
在这里你需要flatMap:
List<Long> innerEnityIds =
listOfEnity.stream() // Stream<Entity>
.flatMap(sys -> sys.getData().stream().map(InnerEntity::getId)) // Stream<Long>
.collect(Collectors.toList()); // List<Long>
Run Code Online (Sandbox Code Playgroud)
或者,您可以将该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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7301 次 |
| 最近记录: |