如何从列表创建哈希集<;对象>;通过使用Java8流从对象获取多个字段值?

如何从列表创建哈希集<;对象>;通过使用Java8流从对象获取多个字段值?,java,java-8,java-stream,Java,Java 8,Java Stream,DataHistoryRecord类: public class DataHistoryRecord { Long dataCreatedBy; Long dataModifiedBy; getters & setters } 我有列表,我想用uniquedataCreatedBy和dataModifiedByid从中创建HashSet 例如:如果列表有以下两条记录: DataHistoryRecord1与dataCreatedBy:1和dataModifiedBy:2 DataH

DataHistoryRecord类:

public class DataHistoryRecord {

Long dataCreatedBy;
Long dataModifiedBy;
getters & setters

}
我有
列表
,我想用unique
dataCreatedBy
dataModifiedBy
id从中创建
HashSet

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

DataHistoryRecord1与dataCreatedBy:1和dataModifiedBy:2

DataHistoryRecord2与dataCreatedBy:1和dataModifiedBy:3

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


注意:请建议不使用foreach的方法

使用以下代码:

      Set<Long> collect = list
         .stream()
         .flatMap(record -> Stream.of(record.getCreatedBy(), record.getModifiedBy())
         .collect(Collectors.toSet());
Set collect=list
.stream()
.flatMap(record->Stream.of(record.getCreatedBy(),record.getModifiedBy())
.collect(收集器.toSet());
你可以这样做

Set<Long> uniqueValues = historyRecords.stream()
        .flatMap(hr -> Stream.of(hr.getCreatedBy(), hr.getModifiedBy()))
        .collect(Collectors.toSet());
Set uniqueValues=historyRecords.stream()
.flatMap(hr->Stream.of(hr.getCreatedBy(),hr.getModifiedBy())
.collect(收集器.toSet());

@S.K.我们应该使用foreach还是您建议的方法?哪一种更好,有什么想法吗?如果OP真的需要
哈希集
.collect(Collectors.toCollection(HashSet::new))
-因为对于
收集器。toSet()
“返回的集的类型没有保证;”()