映射对象列表 [重复]
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()));
【讨论】:
以上是关于映射对象列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章