Проблема в том, что вы используете необработанный Set[]
без универсального типа.
Чтобы ваш код работал, вы должны либо использовать универсальный массив:
Set<Number>[] arrOfSets = new Set[]{
new TreeSet<>(List.of(1, 2)),
new LinkedHashSet<>(Arrays.asList(1, 2, 3, null))
};
List<Number> collect = Arrays.stream(arrOfSets) // Stream<Set<Number>>
.flatMap(Set::stream) // Stream<Number>
.collect(Collectors.toList());
, либо приведениеваш поток от Stream<Object>
до Stream<Number>
с использованием Stream.map()
:
Set[] arrOfSets = new Set[]{
new TreeSet<>(List.of(1, 2)),
new LinkedHashSet<>(Arrays.asList(1, 2, 3, null))
};
List<Number> collect = Arrays.stream(arrOfSets) // Stream<Set>
.map(i -> (Set<Number>) i) // Stream<Set<Number>>
.flatMap(Set::stream) // Stream<Object>
.collect(Collectors.toList());
Как вы уже упоминали, проблема такая же для List<Set>
.У Set
нет типа, поэтому либо используйте List<Set<Number>>
, либо приведите, как раньше. Я бы порекомендовал использовать набранные List
s или Set
s.