java中如何给一个对象的list,根据对象的某个字段分组
在Java中,可以使用Collectors.groupingBy
方法来根据对象的某个字段对列表进行分组。以下是一个简单的例子,演示如何根据对象的某个字段对对象列表进行分组:
import java.util.*;
import java.util.stream.Collectors;
class Person {
String name;
int age;
Person(String name, int age) {
this.name = name;
this.age = age;
}
// getter and toString methods for convenience
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return "Person{name='" + name + '\'' + ", age=" + age + '}';
}
}
public class GroupByExample {
public static void main(String[] args) {
List<Person> people = Arrays.asList(
new Person("Alice", 30),
new Person("Bob", 30),
new Person("Charlie", 25),
new Person("David", 25),
new Person("Alice", 20)
);
Map<Integer, List<Person>> groupedByAge = people.stream()
.collect(Collectors.groupingBy(Person::getAge));
groupedByAge.forEach((age, persons) -> {
System.out.println(age + ": " + persons);
});
}
}
在这个例子中,我们定义了一个Person
类,并创建了一个Person
对象的列表。然后我们使用groupingBy
收集器根据每个Person
对象的age
字段对列表进行分组,结果是一个Map
,其中键是年龄,值是具有该年龄的所有Person
对象的列表。最后,我们遍历这个映射并打印出分组的结果。
评论已关闭