在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个列表中获取所有对象?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Java 8 Streams 从列表中仅获取所需的对象

Java流从列表中创建一个对象[关闭]

如何使用流从对象列表中获取地图? [复制]

《asyncio 系列》8. 在 asyncio 中通过流(StreamReaderStreamWriter)来实现 TCP 请求的发送与接收

如何使用流从两个列表或数组乘法中查找元素对

jquery:获取逗号分隔列表中的前 X 个项目