在Java中按降序对用户定义的对象排序

x33g5p2x  于2022-10-16 转载在 Java  
字(1.5k)|赞(0)|评价(0)|浏览(921)

Java提供内置实用程序方法*sort()和Comparator集合。reverseOrder()*按降序对对象排序。

在Java中按降序对用户定义的对象排序

  1. Collections.sort(persons, Collections.reverseOrder());

这个示例演示了我们创建一个person对象列表,并使用Comparable接口的*compateTo()*方法比较每个人的年龄。简而言之,我们正在按年龄降序对人进行分类。
ij1k1l

  1. public class Person implements Comparable < Person > {
  2. private int id;
  3. private String name;
  4. private int age;
  5. public Person(int id, String name, int age) {
  6. this.id = id;
  7. this.name = name;
  8. this.age = age;
  9. }
  10. public int getId() {
  11. return id;
  12. }
  13. public void setId(int id) {
  14. this.id = id;
  15. }
  16. public String getName() {
  17. return name;
  18. }
  19. public void setName(String name) {
  20. this.name = name;
  21. }
  22. public int getAge() {
  23. return age;
  24. }
  25. public void setAge(int age) {
  26. this.age = age;
  27. }
  28. @Override
  29. public String toString() {
  30. return this.name;
  31. }
  32. @Override
  33. public int compareTo(Person otherPerson) {
  34. return (this.getAge() - otherPerson.getAge());
  35. }
  36. }

注意,Person类实现Comparable接口并提供compareTo()方法实现。
下面是测试和排序person对象的代码:

  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.List;
  4. public class PersonSorterInASC {
  5. public static void main(String[] args) {
  6. sortUserDefinedObjectsInAsc();
  7. }
  8. private static void sortUserDefinedObjectsInAsc() {
  9. List < Person > persons = new ArrayList < Person > ();
  10. Person person1 = new Person(59, "John", 40);
  11. Person person12 = new Person(67, "Roger", 25);
  12. Person person13 = new Person(45, "Steven", 30);
  13. persons.add(person1);
  14. persons.add(person12);
  15. persons.add(person13);
  16. System.out.println("Before Sorting : " + persons);
  17. Collections.sort(persons, Collections.reverseOrder());
  18. System.out.println("After Sorting : " + persons);
  19. }
  20. }

输出:

  1. Before Sorting : [John, Roger, Steven]
  2. Sort in decending order : [John, Steven, Roger]

相关文章

最新文章

更多