使用内部对象属性对对象进行排序



我有一个名为Class的类,它具有类型Set<Student>的 Students 属性。我想根据学生的集合进行排序Set<Student>

public class Class {
private int id;
private String className;
private Set<Student> students;
//getter an setter here
}
public class Student {
private int id; 
private String name;
private int age;
//getter an setter here
}

您可以为类Class的对象创建自定义Comparator(请参阅此处的 API)。下面是一个示例,其中比较器将通过增加类的students属性的大小对类进行排序:

class ClassComparator implements Comparator<Class> {
@Override
public int compare(Class o1, Class o2) {
int set1Size = o1.getStudents().size();
int set2Size = o2.getStudents().size();
return Integer.compare(set1Size, set2Size);
}
}

您只需要实现compare方法。只需更改算法以满足您的要求,这是它应该返回的内容(取自 API 文档)

负整数、

零或正整数,因为第一个参数小于、等于或大于第二个参数。

然后你这样使用它

List<Class> classes = ... // your list of Classes
classes.sort(new ClassComparator());

这将对classes列表进行排序

您似乎想按每个班级的学生人数进行排序。

在这种情况下,一个简单的解决方案如下:

myList.sort(Comparator.comparingInt((Class c) -> c.getStudents().size()));

最新更新