[英]get list of ids from list of objects from inner list java 8
我有实体类的列表:
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())));
在这里,您需要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>
我认为这可能会解决问题(尚未测试):
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收集到一个列表中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.