Java 要映射的对象的映射列表

Java 要映射的对象的映射列表,java,java-8,grouping,java-stream,Java,Java 8,Grouping,Java Stream,我想使用Java Streams按id()对用户列表进行分组 例如,我有列表:新用户(1L,“第一”),新用户(2L,“第二”) 如何将此列表分组以获取地图 User.java public final class User { final Long id; final String name; public User(final Long id, final String name) { this.id = id; this.name

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

例如,我有
列表:新用户(1L,“第一”),新用户(2L,“第二”)

如何将此列表分组以获取
地图

User.java

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都映射到单个
用户
,请使用
收集器。toMap

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

您是否计划让多个用户具有相同的ID?如果是,您将如何合并他们?按遭遇顺序选择第一个/最后一个,或将其收集到
列表中
?@Eugene no,该列表将包含具有唯一ID的用户。在这种情况下,Eran(或副本)的答案就可以了。
Map<Long,User> users = list.stream().collect(Collectors.toMap(User::id,Function.identity()));