У меня есть пользовательский класс Custom
.
public class Custom {
private Long id;
List<Long> ids;
// getters and setters
}
Теперь у меня есть List<Custom>
объектов. Я хочу конвертировать List<Custom>
в List<Long>
.
Я написал код, как показано ниже, и он работает нормально.
List<Custom> customs = Collections.emptyList();
Stream<Long> streamL = customs.stream().flatMap(x -> x.getIds().stream());
List<Long> customIds2 = streamL.collect(Collectors.toList());
Set<Long> customIds3 = streamL.collect(Collectors.toSet());
Теперь я объединяю line2 и line3 в одну строку, как показано ниже.
List<Long> customIds = customs.stream().flatMap(x -> x.getIds().stream()).collect(Collectors.toSet());
Теперь этот код не компилируется, и я получаю ошибку ниже -
error: incompatible types: inference variable R has incompatible bounds
List<Long> customIds = customs.stream().flatMap(x -> x.getIds().stream()).collect(Collectors.toSet());
^
equality constraints: Set<Long>
upper bounds: List<Long>,Object
where R,A,T are type-variables:
R extends Object declared in method <R,A>collect(Collector<? super T,A,R>)
A extends Object declared in method <R,A>collect(Collector<? super T,A,R>)
T extends Object declared in interface Stream
Как мне правильно преобразовать List<Custom>
в Set<Long>
или List<Long>