在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<String>
中获取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<String>
的工作日卡
【讨论】:
以上是关于在java 8中通过流从1个列表的1个列表中获取所有对象?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java 8 Streams 从列表中仅获取所需的对象
《asyncio 系列》8. 在 asyncio 中通过流(StreamReaderStreamWriter)来实现 TCP 请求的发送与接收