我试图基于多个条件进行列表筛选并排序。
class Student{
private int Age;
private String className;
private String Name;
public Student(int age, String className, String name) {
Age = age;
this.className = className;
Name = name;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
public String getClassName() {
return className;
}
public void setClassName(String className) {
this.className = className;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
}
现在,如果我有一个这样的列表,比如说
List<Student> students = new ArrayList<>();
students.add(new Student(24, "A", "Smith"));
students.add(new Student(24, "A", "John"));
students.add(new Student(30, "A", "John"));
students.add(new Student(20, "B", "John"));
students.add(new Student(24, "B", "Prince"));
我如何得到一个具有不同姓名的最年长学生列表呢?在C#中,可以使用System.Linq GroupBy进行比较,然后使用select进行展开,但我不太确定如何在Java中实现相同的功能。
students.stream().collect(groupingBy(...))
可以翻译为“对学生进行流式处理并按照指定方式进行分组”。 - Andy Turner