在 Java 中,你可以通过使用方法引用和 Lambda 表达式来按条件动态传入方法引用以进行分组。在你的示例中,你需要将某个方法作为参数传递给 Collectors.groupingBy()
。这可以通过使用 Function
接口来实现。
下面是一个示例代码,展示了如何通过动态传入方法引用进行分组:
import java.util.*;
import java.util.stream.Collectors;
class Student {
private String name;
private String sex;
private int age;
// constructor, getters, setters...
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
List<Student> students = new ArrayList<>();
// add some students...
// 使用 lambda 表达式动态传入方法引用进行分组
Map<String, List<Student>> groupedBySex = students.stream()
.collect(Collectors.groupingBy(Student::getSex));
Map<Integer, List<Student>> groupedByAge = students.stream()
.collect(Collectors.groupingBy(Student::getAge));
// 输出结果
System.out.println(groupedBySex);
System.out.println(groupedByAge);
}
}
在这个示例中,我们创建了一个 Student
类,它有一些属性(例如姓名、性别和年龄)。然后,我们使用 Collectors.groupingBy()
方法根据性别和年龄对学生列表进行分组。我们通过使用方法引用 Student::getSex
和 Student::getAge
来动态传递要进行分组的属性。