如何通过使用 Java8 Stream 从对象中获取多个字段值来从 List<Object>

数据历史记录类:


public class DataHistoryRecord {


Long dataCreatedBy;

Long dataModifiedBy;

getters & setters


}

我有List<DataHistoryRecord>并且我想用HashSet它来创建唯一dataCreatedBy和dataModifiedByID。


例如:如果列表有以下两条记录:


DataHistoryRecord1 与 dataCreatedBy: 1 和 dataModifiedBy: 2


DataHistoryRecord2 与 dataCreatedBy: 1 和 dataModifiedBy: 3


输出HashSet应该有三个值;1,2,3


注意:请建议没有 foreach 的方法


慕码人8056858
浏览 3105回答 2
2回答

郎朗坤

你可以这样做,Set<Long>&nbsp;uniqueValues&nbsp;=&nbsp;historyRecords.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(hr&nbsp;->&nbsp;Stream.of(hr.getCreatedBy(),&nbsp;hr.getModifiedBy())) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());

叮当猫咪

使用以下代码:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Set<Long>&nbsp;collect&nbsp;=&nbsp;list &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.flatMap(record&nbsp;->&nbsp;Stream.of(record.getCreatedBy(),&nbsp;record.getModifiedBy()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.toSet());
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java