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

时间:2018-04-16 08:52:48

标签: java java-8

我有一个名为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
}

2 个答案:

答案 0 :(得分:1)

您可以为类Comparator的对象创建自定义ClassSee 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()));