Как присвоить коллекции новое значение через 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))
→ Ссылка