Java 要映射的对象的映射列表
我想使用Java Streams按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
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()));