我有一个名为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()));