Java list 方法分组

发布时间:2024年01月11日

在 Java 中,可以使用?List?的?stream()?方法来对列表进行操作。要按照特定条件将元素分组,可以使用?Collectors.groupingBy()?方法。

下面是一个示例代码,展示了如何根据某个属性值将 List 中的元素分组:

import java.util.*;
import java.util.stream.Collectors;
?
public class Main {
? ? public static void main(String[] args) {
? ? ? ? // 创建一个包含多个 Person 对象的 List
? ? ? ? List<Person> personList = Arrays.asList(
? ? ? ? ? ? ? ? new Person("Alice", "Female"),
? ? ? ? ? ? ? ? new Person("Bob", "Male"),
? ? ? ? ? ? ? ? new Person("Charlie", "Male"),
? ? ? ? ? ? ? ? new Person("Dave", "Male")
? ? ? ? );
? ? ? ??
? ? ? ? // 按照 gender(性别)字段进行分组
? ? ? ? Map<String, List<Person>> groupedPersons = personList.stream()
? ? ? ? ? ? ? ? .collect(Collectors.groupingBy(Person::getGender));
? ? ? ? ? ? ? ??
? ? ? ? // 输出结果
? ? ? ? for (Map.Entry<String, List<Person>> entry : groupedPersons.entrySet()) {
? ? ? ? ? ? System.out.println("Group by Gender: " + entry.getKey());
? ? ? ? ? ??
? ? ? ? ? ? for (Person person : entry.getValue()) {
? ? ? ? ? ? ? ? System.out.println("\t" + person);
? ? ? ? ? ? }
? ? ? ? ? ??
? ? ? ? ? ? System.out.println();
? ? ? ? }
? ? }
}
?
class Person {
? ? private String name;
? ? private String gender;
? ??
? ? public Person(String name, String gender) {
? ? ? ? this.name = name;
? ? ? ? this.gender = gender;
? ? }
? ??
? ? public String getName() { return name; }
? ? public String getGender() { return gender; }
? ??
? ? @Override
? ? public String toString() {
? ? ? ? return "Person{" +
? ? ? ? ? ? ? ? "name='" + name + '\'' +
? ? ? ? ? ? ? ? ", gender='" + gender + '\'' +
? ? ? ? ? ? ? ? '}';
? ? }
}

运行上述代码会得到类似于以下输出:

Group by Gender: Male
? ? Person{name='Bob', gender='Male'}
? ? Person{name='Charlie', gender='Male'}
? ? Person{name='Dave', gender='Male'}
?
Group by Gender: Female
? ? Person{name='Alice', gender='Female'}

文章来源:https://blog.csdn.net/xiaofanren1111/article/details/135536155
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。