为了账号安全,请及时绑定邮箱和手机立即绑定

从内部列表java 8的对象列表中获取ID列表

从内部列表java 8的对象列表中获取ID列表

慕森王 2022-07-06 19:15:31
我有实体类列表: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步骤分解为flatMapmap

List<Long> innerEnityIds = 
    listOfEnity.stream() // Stream<Entity>
               .flatMap(sys -> sys.getData().stream()) // Stream<InnerEntity>
               .map(InnerEntity::getId) // Stream<Long>
               .collect(Collectors.toList()); // List<Long>


查看完整回答
反对 回复 2022-07-06
?
潇湘沐

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 收集到一个列表中


查看完整回答
反对 回复 2022-07-06
  • 2 回答
  • 0 关注
  • 917 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号