如何使用Java8 Stream从对象中获取多个字段值,从List <Object>创建HashSet?

027*_*027 2 java java-8 java-stream

HistoryRecord类:

public class DataHistoryRecord {

Long dataCreatedBy;
Long dataModifiedBy;
getters & setters

}
Run Code Online (Sandbox Code Playgroud)

我有List<DataHistoryRecord>,我想用HashSet它创造独特dataCreatedBydataModifiedByid.

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

HistoryRecord1 with createdBy:1和modifiedBy:2

HistoryRecord2 with createdBy:1和modifiedBy:3

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

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

Rav*_*ala 5

你可以这样做,

Set<Long> uniqueValues = historyRecords.stream()
        .flatMap(hr -> Stream.of(hr.getCreatedBy(), hr.getModifiedBy()))
        .collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)