在java 8中通过流从1个列表的1个列表中获取所有对象?

Posted

技术标签:

【中文标题】在java 8中通过流从1个列表的1个列表中获取所有对象?【英文标题】:get all object from 1 list of 1 list by stream in java 8? 【发布时间】:2019-06-25 14:22:26 【问题描述】:

我有 2 节课,这个:

public class TimeCardResponse 
   private String login;
   List<TimeCardDetail> timeCardDetails;

还有这个:

public TimeCardDetail(String workingDay, Float workingTime) 
    this.workingDay = workingDay;
    this.workingTime = workingTime;

    input : a List<TimeCardResponse>

我想在List&lt;String&gt; 中获取TimeCardDetail 类的所有workingDay,并在Java 8 中使用Stream

【问题讨论】:

【参考方案1】:
List<String> workingDays  = a.stream().map(TimeCardResponse::getTimeCardDetails)
                .filter(x-> Objects::nonNull)
                .flatMap(List::stream)
                .map(TimeCardDetail::getWorkingDay).collect(toList());

【讨论】:

【参考方案2】:

假设你有一些getWorkingDay 方法:

List<String> workDays = timeCardDetails.stream()
                                       .map(TimeCardDetail::getWorkingDay)
                                       .filter(Objects::nonNull)    //filter out null values
                                       .collect(Collectors.toList());

这将返回一个List&lt;String&gt;的工作日卡

【讨论】:

以上是关于在java 8中通过流从1个列表的1个列表中获取所有对象?的主要内容,如果未能解决你的问题,请参考以下文章