Java 根据list里面某个字段进行分组
时间: 2023-08-20 08:07:26 浏览: 37
可以使用 Java 8 中的 Stream API 来根据 List 中的某个字段进行分组。假设有一个 List<User>,其中 User 类包含一个属性为 age,我们要根据 age 进行分组,代码如下:
```
Map<Integer, List<User>> usersByAge = userList.stream().collect(Collectors.groupingBy(User::getAge));
```
其中,User::getAge 表示使用 User 类的 getAge 方法作为分组依据,得到的结果是一个 Map<Integer, List<User>>,表示按照年龄分组后的 User 列表。
相关问题
如何用Java将list根据某个字段进行分组
可以使用Java 8的Stream API来实现。
假设我们有一个List<User>,每个User对象都包含一个name和age属性。我们需要按照name进行分组,可以使用如下代码:
Map<String, List<User>> groupMap = userList.stream()
.collect(Collectors.groupingBy(User::getName));
其中,User::getName是一个方法引用,代表按照User对象的name属性进行分组。groupMap的类型是Map<String, List<User>>,其中String表示分组的依据,List<User>表示分组后的结果。
可以通过遍历groupMap来查看分组结果:
for (Map.Entry<String, List<User>> entry : groupMap.entrySet()) {
System.out.println("分组:" + entry.getKey());
for (User user : entry.getValue()) {
System.out.println(user.getName() + "," + user.getAge());
}
}
以上代码会打印出每个分组的名称,以及该分组中的每个用户的name和age属性。
java给一个对象list,根据某个字段进行分组
可以使用Java 8的Stream API来实现根据某个字段进行分组,例如按照学生的年级进行分组:
假设有一个Student类,其中包含name、grade等属性,代码如下:
```
public class Student {
private String name;
private int grade;
public Student(String name, int grade) {
this.name = name;
this.grade = grade;
}
public String getName() {
return name;
}
public int getGrade() {
return grade;
}
}
```
现在有一个Student列表students,我们要根据grade进行分组,代码如下:
```
Map<Integer, List<Student>> studentMap = students.stream().collect(Collectors.groupingBy(Student::getGrade));
```
这段代码使用了Stream的groupingBy方法,将学生按照年级进行分组,返回的是一个Map<Integer, List<Student>>类型,其中key为年级,value为该年级的学生列表。