可以使用Java 8的Stream API来实现将一个List按照某个字段分组成多个List的操作。

假设有一个包含Person对象的List,每个Person对象都有一个字段age,我们要按照age字段将这个List分组成多个List。可以按照以下步骤实现:

  1. 根据age字段对List进行分组,使用Collectors.groupingBy()方法,参数为一个Function,表示按照哪个字段进行分组。返回的结果是一个Map,其中key是分组的字段的值,value是该分组的List。

  2. 可以通过调用Map的values()方法,获取所有分组的List。

下面是一个示例代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class GroupListByField {
    public static void main(String[] args) {
        List<Person> persons = new ArrayList<>();
        persons.add(new Person('Alice', 20));
        persons.add(new Person('Bob', 25));
        persons.add(new Person('Charlie', 20));
        persons.add(new Person('David', 30));

        // 按照age字段分组
        Map<Integer, List<Person>> groupedMap = persons.stream()
                .collect(Collectors.groupingBy(Person::getAge));

        // 获取所有分组的List
        List<List<Person>> groupedLists = new ArrayList<>(groupedMap.values());

        // 打印分组结果
        for (List<Person> group : groupedLists) {
            System.out.println('Group:');
            for (Person person : group) {
                System.out.println(person.getName() + ' - ' + person.getAge());
            }
        }
    }
}

class Person {
    private String name;
    private int age;

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

输出结果为:

Group:
Alice - 20
Charlie - 20
Group:
Bob - 25
Group:
David - 30

可以看到,根据age字段分组后,20岁的有两个人,25岁的有一个人,30岁的有一个人。这样就将一个List按照某个字段分组成了多个List。

Java List 分组:根据字段将列表拆分成多个列表

原文地址: https://www.cveoy.top/t/topic/qB8H 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录