我有一个名为Class
的班级,该班级的学生属性为Set<Student>
。我想根据学生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
}
答案 0 :(得分:1)
您可以为类Comparator
的对象创建自定义Class
(See API here)。下面是一个示例,比较器将通过增加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
列表
答案 1 :(得分:1)
您似乎想按每个班级的学生人数排序。
在这种情况下,一个简单的解决方案如下:
myList.sort(Comparator.comparingInt((Class c) -> c.getStudents().size()));