Java 8嵌套(多级)分组依据是指在Java 8中,可以使用Stream API的groupingBy()方法进行多级分组操作。该方法接受一个Function参数,用于指定分组依据。
具体来说,Java 8的groupingBy()方法可以根据指定的分组依据将元素分组成一个Map对象。这个Map对象的键是分组依据的结果,值是对应分组依据的元素列表。
下面是一个示例代码,演示了如何使用Java 8的groupingBy()方法进行多级分组:
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()方法根据年龄返回年龄组别。
这种多级分组的应用场景很多,比如统计不同性别和年龄段的人数、按照不同属性进行多级分类等。
腾讯云相关产品和产品介绍链接地址:
没有搜到相关的结果
领取专属 10元无门槛券
手把手带您无忧上云