java - 映射对象列表以映射

标签 java java-8 grouping java-stream

<分区>

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

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

如何将此列表分组以获得 Map<Long, User>

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

用户.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 映射到单个 User,请使用 Collectors.toMap:

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

关于java - 映射对象列表以映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48299519/

相关文章:

c# - [L]GPL 在 Java/C# 代码中的应用

Java 8 字符串处理 - replaceFirst 和 replaceAll

Java8无符号算术

java - 映射中的嵌套空检查

linux - Bash:如何从 txt 文件中读取行,按列值识别和删除重复项

python - 在 Pandas 中查找同名组?

java - Spring Data JPA 存储库

java - 你应该在 Java 中扩展 ArrayList吗

algorithm - 最有效的选择周围点最多的点的方法

java - 我可以在多个 jvm 上访问修改后的属性吗?