说我有一个对象
Person
private int age;
private String name;
我希望使用像Arrays.sort()
之类的东西自动对它们进行排序,以便在高龄之前出现低年龄。
执行此操作的常用方法是使用比较器,但我有很多有用的实用程序功能,是否有更简洁的方法来执行此操作?
答案 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仅在您想要以不遵循其自然顺序的方式对对象进行排序时才有用。