java list 根据id分组
时间: 2023-07-20 13:44:09 浏览: 141
Java 中可以使用 Stream API 和 Collectors 工具类来实现根据 id 分组:
假设有如下实体类:
```java
public class User {
private int id;
private String name;
public User(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "User{id=" + id + ", name='" + name + "'}";
}
}
```
则可以使用如下代码将 List<User> 根据 id 分组:
```java
import java.util.*;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
// 假设有如下列表
List<User> userList = Arrays.asList(
new User(1, "Alice"),
new User(2, "Bob"),
new User(1, "Charlie"),
new User(3, "David"),
new User(2, "Edward")
);
// 使用 Stream API 和 Collectors 工具类根据 id 分组
Map<Integer, List<User>> grouped = userList.stream()
.collect(Collectors.groupingBy(User::getId));
// 输出结果
System.out.println(grouped);
}
}
```
输出结果为:
```
{1=[User{id=1, name='Alice'}, User{id=1, name='Charlie'}],
2=[User{id=2, name='Bob'}, User{id=2, name='Edward'}],
3=[User{id=3, name='David'}]}
```
其中,`Collectors.groupingBy(User::getId)` 根据 User 对象的 id 属性进行分组,将每个 User 对象添加到对应的列表中。最终,将结果保存为 Map<Integer, List<User>> 类型,输出结果。
阅读全文