В вашем случае результат потока будет Set<Long>
, и вы хотите присвоить его переменной типа HashSet
.Поскольку HashSet
является подтипом Set
, вы не можете сделать это.Либо вы меняете тип выходной переменной на Set<Long>
, либо вы явно приводите результат сбора к HashSet<Long>
.Поскольку Collectors::toSet
использует HashMap
по умолчанию - оно должно работать.
РЕДАКТИРОВАТЬ
Как правильно указал shmosel, делать предположения отип возврата, так что если вы хотите HashSet
, конкретно используйте toCollection(HashSet::new)
:
HashSet<Long> output = s.stream()
.map(v -> v.getId())
.collect(Collectors.toCollection(HashSet::new));
Теперь результат операции collect
будет HashSet<Long>
, так что вы сможете присвоить его HashSet<Long>
илиSet<Long>
переменная.