在多级嵌套类中使用Stream API的groupingBy可以通过以下步骤实现:
下面是一个示例代码:
import java.util.*;
import java.util.stream.Collectors;
class School {
private List<Class> classes;
public School(List<Class> classes) {
this.classes = classes;
}
public List<Class> getClasses() {
return classes;
}
}
class Class {
private int classId;
private List<Student> students;
public Class(int classId, List<Student> students) {
this.classId = classId;
this.students = students;
}
public int getClassId() {
return classId;
}
public List<Student> getStudents() {
return students;
}
}
class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = Arrays.asList(
new Student("Alice", 18),
new Student("Bob", 19),
new Student("Charlie", 18),
new Student("David", 19),
new Student("Eve", 18)
);
List<Class> classes = Arrays.asList(
new Class(1, students.subList(0, 2)),
new Class(2, students.subList(2, 4)),
new Class(3, students.subList(3, 5))
);
School school = new School(classes);
Map<Integer, Map<Integer, List<Student>>> groupedStudents = school.getClasses().stream()
.collect(Collectors.groupingBy(Class::getClassId,
Collectors.groupingBy(Student::getAge)));
System.out.println(groupedStudents);
}
}
在上面的示例中,我们创建了一个包含多个班级、每个班级包含多个学生的学校数据结构。然后,我们使用Stream API的groupingBy方法按照班级ID和学生年龄进行分组。最后,我们将分组结果打印出来。
这是一个简单的示例,你可以根据实际需求进行修改和扩展。对于更复杂的数据结构和需求,你可以使用更多的lambda表达式和Collectors方法来实现多级嵌套类的分组操作。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云