使用groupingBy创建一个以不可变列表为键的Map

cdo*_*doe 10 java java-8

说,我有一个叫做Project的课,

class Project {
    private String projectId;
    private String projectName;
}
Run Code Online (Sandbox Code Playgroud)

还有一个名为Employee的类,它有一个项目列表

class Employee {
    private String name;
    private List<Project> projects
}
Run Code Online (Sandbox Code Playgroud)

我还有一个Employee对象列表.现在,我需要创建一个Map,其中项目列表作为键,一组员工对象作为此列表中的值.我可以让它工作

Map<List<Project>, Set<Employee>> x =
        employees
        .stream
        .collect(Collectors.groupingBy(Employee::getProjects, Collectors.toSet()));
Run Code Online (Sandbox Code Playgroud)

但是,由于我使用List作为键,我想要格外小心并确保列表是不可变的.有没有办法实现这个目标?

谢谢.

Evg*_*aev -1

您可以使用

private List<? extends Project> projects = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)

填充员工时。它设置了一个逻辑上不可变的列表。