首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java 8嵌套(多级)分组依据

Java 8嵌套(多级)分组依据是指在Java 8中,可以使用Stream API的groupingBy()方法进行多级分组操作。该方法接受一个Function参数,用于指定分组依据。

具体来说,Java 8的groupingBy()方法可以根据指定的分组依据将元素分组成一个Map对象。这个Map对象的键是分组依据的结果,值是对应分组依据的元素列表。

下面是一个示例代码,演示了如何使用Java 8的groupingBy()方法进行多级分组:

代码语言:txt
复制
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        // 创建一个包含Person对象的列表
        List<Person> persons = Arrays.asList(
                new Person("Alice", "Female", 25),
                new Person("Bob", "Male", 30),
                new Person("Charlie", "Male", 35),
                new Person("Diana", "Female", 40),
                new Person("Eva", "Female", 45)
        );

        // 使用groupingBy()方法进行多级分组
        Map<String, Map<String, List<Person>>> groupedPersons = persons.stream()
                .collect(Collectors.groupingBy(Person::getGender, Collectors.groupingBy(Person::getAgeGroup)));

        // 打印分组结果
        for (Map.Entry<String, Map<String, List<Person>>> entry : groupedPersons.entrySet()) {
            System.out.println("Gender: " + entry.getKey());
            for (Map.Entry<String, List<Person>> subEntry : entry.getValue().entrySet()) {
                System.out.println("Age Group: " + subEntry.getKey());
                for (Person person : subEntry.getValue()) {
                    System.out.println(person.getName());
                }
            }
        }
    }
}

class Person {
    private String name;
    private String gender;
    private int age;

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

    public String getName() {
        return name;
    }

    public String getGender() {
        return gender;
    }

    public String getAgeGroup() {
        if (age < 30) {
            return "Young";
        } else if (age < 40) {
            return "Middle-aged";
        } else {
            return "Elderly";
        }
    }
}

在上述示例中,我们创建了一个包含Person对象的列表。然后,我们使用groupingBy()方法首先按照性别进行分组,然后在每个性别分组内再按照年龄分组。最后,我们遍历分组结果并打印出来。

这个示例中的Person类包含了name、gender和age属性,其中getGender()方法返回性别,getAgeGroup()方法根据年龄返回年龄组别。

这种多级分组的应用场景很多,比如统计不同性别和年龄段的人数、按照不同属性进行多级分类等。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的视频

领券