Как перевести Set> в Set с помощью стримов?
Дан Set<Set<Integer>>. Необходимо перевести его в Set<Integer>
Set<Set<Integer>> WinningLines = Set.of(Set.of(0, 1, 2), Set.of(3, 4, 5), Set.of(6, 7, 8), Set.of(9, 10, 11),
Set.of(12, 13, 14), Set.of(15, 16, 17), Set.of(18, 19, 20), Set.of(21, 22, 23),
Set.of(0, 9, 21), Set.of(3, 10, 18), Set.of(6, 11, 15), Set.of(1, 4, 7),
Set.of(16, 19, 22), Set.of(8, 12, 17), Set.of(5, 13, 20), Set.of(2, 14, 23));
Set<Integer> x = WinningLines.stream().collect(Collectors.toSet()));
Но нечего не получается, можете решить?
Ответы (1 шт):
Автор решения: Vadik
→ Ссылка
Метод flatMap как раз подходит для такого преобразования. Он позволяет схлопнуть коллекцию из коллекций в одну «плоскую» коллекцию. Например, в случае с Set:
Set<Set<Object>> setOfSets = ...
Set<Object> flatSet = setOfSets.stream()
.flatMap(Collection::stream)
.collect(Collectors.toSet());