java的list集合如何根据对象中的某个字段排序?

时间:2023-03-08 19:38:27

转自:http://blog.****.net/wangjuan_01/article/details/51351633

List集合按某个字段排序

  1. package wjtest_01;
  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.List;
  6. public class ListSort<E> {
  7. @SuppressWarnings("unchecked")
  8. public static void main(String[] args) {
  9. List<Student> list = new ArrayList<Student>();
  10. // 创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
  11. Student s1 = new Student();
  12. s1.setAge(20);
  13. s1.setUsable(true);
  14. Student s2 = new Student();
  15. s2.setAge(19);
  16. s2.setUsable(true);
  17. Student s3 = new Student();
  18. s3.setAge(21);
  19. s3.setUsable(false);
  20. list.add(s1);
  21. list.add(s2);
  22. list.add(s3);
  23. System.out.println("排序前:" + list);
  24. Collections.sort(list, new Comparator<Student>() {
  25. @Override
  26. public int compare(Student o1, Student o2) {
  27. // 按照学生的年龄进行升序排列
  28. if (o1.getAge() > o2.getAge()) {
  29. return 1;
  30. }
  31. if (o1.getAge() == o2.getAge()) {
  32. return 0;
  33. }
  34. return -1;
  35. }
  36. });
  37. System.out.println("升序排序后:" + list);
  38. Collections.sort(list, new Comparator<Student>() {
  39. public int compare(Student o1, Student o2) {
  40. // 按照学生的年龄进行降序排列
  41. if (o1.getAge() > o2.getAge()) {
  42. return -1;
  43. }
  44. if (o1.getAge() == o2.getAge()) {
  45. return 0;
  46. }
  47. return 1;
  48. }
  49. });
  50. System.out.println("降序排序后:" + list);
  51. Boolean b1 = true; // 创建Boolean对象1
  52. Boolean b2 = false; // 创建Boolean对象0
  53. Boolean b3 = true; // 创建Boolean对象1
  54. System.out.println(b1);
  55. int i;
  56. i = b1.compareTo(b2); // b1和b2进行比较
  57. System.out.println(i);//1-0
  58. i = b2.compareTo(b1); // b2和b1进行比较
  59. System.out.println(i);//0-1
  60. i = b1.compareTo(b3); // b1和b3进行比较
  61. System.out.println(i);//1-1
  62. }
  63. }
  64. class Student{
  65. private int age;
  66. private Boolean isUsable;
  67. public int getAge() {
  68. return age;
  69. }
  70. public Boolean isUsable() {
  71. return isUsable;
  72. }
  73. public void setUsable(Boolean isUsable) {
  74. this.isUsable = isUsable;
  75. }
  76. public void setAge(int age) {
  77. this.age = age;
  78. }
  79. @Override
  80. public String toString() {
  81. return getAge()+"";
  82. }
  83. }