在java中对对象的集合进行排序

时间:2015-12-20 09:07:54

标签: java sorting collections

我想使用我创建的排序功能按年龄对学生进行排序,但我不确定是否需要在此部分实施比较器/可比较。

我有以下POJO:

public class Student {

 private String name;
 private int age;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public int getAge() {
    return age;
}

public void setAge(int age) {
    this.age = age;
}
}

创建一个界面:

public interface CollectionsProblem {
    public void sort(Collection<Student> memes, boolean ascending);
}

以下是界面的实现:

public class CollectionsProblemImpl implements CollectionsProblem { 
    public void sort(Collection<Student> students, boolean ascending) { 
        /****Need to add some sorting here in order to sort students by age 
          param0 - students: the collection to sort
          param1 - ascending: true if the collection should be sorting in ascending order, otherwise false***
    */ 
    } 
 } 

1 个答案:

答案 0 :(得分:0)

您可以在Comparable POJO类中实现Student,也可以通过实现Comparator接口来编写单独的比较器,让我们说

public class StudentComparatorByAge implements  Comparator<Student>  {
@Override
public int compare(Object Obj1 , Object Obj2){
}
}

。然后使用Collections.sort(studentArray);(如果实现Comparable)或Collections.sort(studentArray,StudentComparatorByAgeObj );(如果编写单独的比较器)。您还需要从StudentComparatorByAgeObj创建StudentComparatorByAge实例。

您的CollectionsProblem界面没有意义,因为您不需要编写自己的排序功能 - 这已由Collections类提供。比较逻辑是你的担心。