Как присвоить коллекции новое значение через Stream Api?
У меня есть коллекция и значение, по которому я хочу ее отфильтровать, выглядит это так:
StudyGroupPriorityQueue =
StudyGroupPriorityQueue
.stream()
.filter(student ->
student.getFormOfEducation()
.equals(Enum.FormOfEducation.FULL_TIME_EDUCATION))
.collect(Collectors.toCollection(Queue<StudyGroup>));
IDE подчеркивает collectionFactory, а именно Queue<StudyGroup>, в чем моя ошибка?
Ответы (1 шт):
Автор решения: IR42
→ Ссылка
Queue<StudyGroup> просто тип, а Collectors.toCollection принимает объект-фабрику, например, ссылку на конструктор.
Судя по названию переменной вам нужна PriorityQueue
Collectors.toCollection(PriorityQueue::new)
Если объекты в StudyGroupPriorityQueue не реализуют интерфейс Comparable, то:
Collectors.toCollection(() -> new PriorityQueue<>(/*Comparator или его реализация*/comparator))