基于成员变量的排序而不使用比较器来排序对象

时间:2014-10-17 18:16:33

标签: java sorting

说我有一个对象

Person
  private int age;
  private String name;

我希望使用像Arrays.sort()之类的东西自动对它们进行排序,以便在高龄之前出现低年龄。

执行此操作的常用方法是使用比较器,但我有很多有用的实用程序功能,是否有更简洁的方法来执行此操作?

4 个答案:

答案 0 :(得分:4)

让您的课程实施Comparable

答案 1 :(得分:1)

lambdaj中的示例解决了您的用例:

List<Person> sortedByAgePersons = sort(persons, on(Person.class).getAge());

答案 2 :(得分:1)

将Java 8与Lambda一起使用:

personList.sort((p1, p2) -> Integer.compare(p1.age, p2.age));

Collections.sort(personList, (p1, p2) -> Integer.compare(p1.age, p2.age));

答案 3 :(得分:-1)

犯了错误

您还可以实现Comparable接口并覆盖compareTo(...)方法。

这些不保证它的方法会更清晰,但它们只是不同的比较方式。使用Comparator仅在您想要以不遵循其自然顺序的方式对对象进行排序时才有用。