如何从列表创建哈希集<;对象>;通过使用Java8流从对象获取多个字段值?
DataHistoryRecord类:如何从列表创建哈希集<;对象>;通过使用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
public class DataHistoryRecord {
Long dataCreatedBy;
Long dataModifiedBy;
getters & setters
}
我有列表
,我想用uniquedataCreatedBy
和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()
“返回的集的类型没有保证;”()