簡體   English   中英

從內部列表java 8的對象列表中獲取ID列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM