关于java:Map要映射到的对象列表

Map List of objects to Map by

本问题已经有最佳答案,请猛点这里访问。

我想使用Java Streams按id()对用户列表进行分组。

例如,我有List: new User(1L,"First"), new User(2L,"Second")

如何将此列表分组以获取Map

1
2
1L -> new User(1L,"First"),
2L -> new User(2L,"Second")

User.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public final class User {
    final Long id;
    final String name;

    public User(final Long id, final String name) {
        this.id = id;
        this.name = name;
    }

    public Long id() {
        return this.id;
    }

    public String name() {
        return this.name;
    }
}


如果每个ID映射到单个User,请使用Collectors.toMap

1
Map<Long,User> users = list.stream().collect(Collectors.toMap(User::id,Function.identity()));