映射对象列表 [重复]

Posted

技术标签:

【中文标题】映射对象列表 [重复]【英文标题】:Map List of objects to Map by [duplicate] 【发布时间】:2018-06-26 05:45:55 【问题描述】:

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

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

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

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

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 的用户,如果是,您将如何合并他们?按遭遇顺序取第一个/最后一个或将它们收集到List @Eugene 不,该列表将包含具有唯一 ID 的用户 在这种情况下,来自 Eran(或副本)的答案就可以了。 【参考方案1】:

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

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

【讨论】:

以上是关于映射对象列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

熊猫数据框映射到新的对象列表[重复]

通过流将带有列表的列表对象转换为Java 8中的映射[重复]

Python:就地映射[重复]

数据传输对象 (dto):Hibernate 重复表映射

如何迭代在jstl中将地图作为字段的对象列表? [重复]

类集框架1