Как создать HashSet из списка <Object>, взяв несколько значений полей из объекта с Java8 Stream? - PullRequest
0 голосов
/ 22 октября 2018

Класс DataHistoryRecord:

public class DataHistoryRecord {

Long dataCreatedBy;
Long dataModifiedBy;
getters & setters

}

У меня есть List<DataHistoryRecord>, и я хочу создать из него HashSet с уникальными dataCreatedBy и dataModifiedBy id.

Например:Если список имеет следующие две записи:

DataHistoryRecord1 с dataCreatedBy: 1 и dataModifiedBy: 2

DataHistoryRecord2 с dataCreatedBy: 1 и dataModifiedBy: 3

Выходные данные HashSet должны иметь триценности;1,2,3

Примечание: пожалуйста, предложите подход без foreach

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Вы можете сделать это так,

Set<Long> uniqueValues = historyRecords.stream()
        .flatMap(hr -> Stream.of(hr.getCreatedBy(), hr.getModifiedBy()))
        .collect(Collectors.toSet());
0 голосов
/ 22 октября 2018

Используйте следующий код:

      Set<Long> collect = list
         .stream()
         .flatMap(record -> Stream.of(record.getCreatedBy(), record.getModifiedBy())
         .collect(Collectors.toSet());
...