get list of ids from list of objects from inner list java 8

Er KK Chopra :

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

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. 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())));
Eran :

Here you need 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:

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

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=143215&siteId=1
Recommended