简体   繁体   English

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

[英]get list of ids from list of objects from inner list java 8

I have list of entity class: 我有实体类的列表:

public class Entity
{
    private long id;    
    private List<InnerEnity> data;

    public long getId() {
        return id;
    }

    public List<InnerEnity> getData() {
        return data;
    }
}

this is InnerEnity class 这是InnerEnity类

public class InnerEnity 
{
    private long id;    
    private String data;

    public long getId() {
        return id;
    }

    public String getData() {
        return data;
    }
}

what i need is list of InnerEnity ids. 我需要的是InnerEnity ID列表。 to resolve this i am trying something like that :- 为了解决这个问题,我正在尝试类似的东西:

List innerEnityIds = listOfEnity.stream().map(sys -> sys.getData().stream().map(obj->obj.getId().collect(Collectors.toList())));

Here you need flatMap : 在这里,您需要flatMap

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

Or, you can break the flatMap step into flatMap + map : 或者,您可以将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>

I think this might do the trick (haven't tested it): 我认为这可能会解决问题(尚未测试):

List<Long> innerEntityIds = listOfEnity.stream()
    .flatMap(e -> e.getData().stream()) // 1
    .map(ie -> ie.getId())  // 2
    .collect(Collectors.toList()); // 3

1) stream all the inner entities into one stream using flatMap 2) map each inner entity to its id 3) collect the id's into a list 1)使用flatMap将所有内部实体串流到一个流中2)将每个内部实体映射到其ID 3)将ID收集到一个列表中

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM