Я не знаю, что ты говоришь. Ваше текущее решение не отфильтровывает отдельных сотрудников.

ы сначала группируете, а затем применяете фильтрацию с использованием потоков Java?

пример: Учти этоEmployee класс: я хочу сгруппировать по отделам со списком сотрудников с зарплатой больше 2000.

public class Employee {
    private String department;
    private Integer salary;
    private String name;

    //getter and setter

    public Employee(String department, Integer salary, String name) {
        this.department = department;
        this.salary = salary;
        this.name = name;
    }
}   

Вот как я могу это сделать

List<Employee> list   = new ArrayList<>();
list.add(new Employee("A", 5000, "A1"));
list.add(new Employee("B", 1000, "B1"));
list.add(new Employee("C", 6000, "C1"));
list.add(new Employee("C", 7000, "C2"));

Map<String, List<Employee>> collect = list.stream()
    .filter(e -> e.getSalary() > 2000)
    .collect(Collectors.groupingBy(Employee::getDepartment));  

Выход

{A=[Employee [department=A, salary=5000, name=A1]],
 C=[Employee [department=C, salary=6000, name=C1], Employee [department=C, salary=7000, name=C2]]}

Так как в отделе B нет сотрудников с зарплатой, превышающей 2000. Поэтому для отдела B нет ключа:Но на самом деле, я хочу иметь этот ключ с пустым списком -

Ожидаемый результат

{A=[Employee [department=A, salary=5000, name=A1]],
 B=[],
 C=[Employee [department=C, salary=6000, name=C1], Employee [department=C, salary=7000, name=C2]]}

Как мы можем это сделать?

Ответы на вопрос(4)

Ваш ответ на вопрос