根据指定字段对数组排序

  • 简介 (Introduction):

          1、 处理一个数组的数据
          2、 根据对象的某个字段的值, 进行排序操作

  • 快速上手 (Getting Started):

           数据模型

 1 [{
 2     "name": "name3",
 3     "age": "03",
 4     "sex": "03",
 5     "recodeNumber": 3
 6 }, {
 7     "name": "name2",
 8     "age": "02",
 9     "sex": "02",
10     "recodeNumber": 2
11 }, {
12     "name": "name4",
13     "age": "04",
14     "sex": "04",
15     "recodeNumber": 4
16 }, {
17     "name": "name1",
18     "age": "01",
19     "sex": "01",
20     "recodeNumber": 1
21 }, {
22     "name": "name5",
23     "age": "05",
24     "sex": "05",
25     "recodeNumber": 5
26 }]
View Code

              1、 实体类建立

 1 package demo.pojo;
 2 
 3 public class Field {
 4 
 5     /**
 6      * 名称
 7      */
 8     private String name;
 9 
10     /**
11      * 年龄
12      */
13     private String age;
14 
15     /**
16      * 性别
17      */
18     private String sex;
19 
20     /**
21      * 字段序号
22      */
23     private int recodeNumber;
24 
25 
26     public String getName() {
27         return name;
28     }
29 
30     public void setName(String name) {
31         this.name = name;
32     }
33 
34     public String getAge() {
35         return age;
36     }
37 
38     public void setAge(String age) {
39         this.age = age;
40     }
41 
42     public String getSex() {
43         return sex;
44     }
45 
46     public void setSex(String sex) {
47         this.sex = sex;
48     }
49 
50     public int getRecodeNumber() {
51         return recodeNumber;
52     }
53 
54     public void setRecodeNumber(int recodeNumber) {
55         this.recodeNumber = recodeNumber;
56     }
57 }
View Code

              2、 创建数据

 1 private static List<Field> getDemoData() {
 2         List<Field> fieldList = new LinkedList<>();
 3 
 4         Field field = new Field();
 5 
 6         field.setAge("0" + 3);
 7 
 8         field.setName("name" + 3);
 9 
10         field.setRecodeNumber(3);
11 
12         field.setSex("0" + 3);
13 
14         fieldList.add(field);
15 
16 
17         Field field2 = new Field();
18 
19         field2.setAge("0" + 2);
20 
21         field2.setName("name" + 2);
22 
23         field2.setRecodeNumber(2);
24 
25         field2.setSex("0" + 2);
26 
27         fieldList.add(field2);
28 
29 
30         Field field4 = new Field();
31 
32         field4.setAge("0" + 4);
33 
34         field4.setName("name" + 4);
35 
36         field4.setRecodeNumber(4);
37 
38         field4.setSex("0" + 4);
39 
40         fieldList.add(field4);
41 
42 
43         Field field1 = new Field();
44 
45         field1.setAge("0" + 1);
46 
47         field1.setName("name" + 1);
48 
49         field1.setRecodeNumber(1);
50 
51         field1.setSex("0" + 1);
52 
53         fieldList.add(field1);
54 
55         Field field5 = new Field();
56 
57         field5.setAge("0" + 5);
58 
59         field5.setName("name" + 5);
60 
61         field5.setRecodeNumber(5);
62 
63         field5.setSex("0" + 5);
64 
65         fieldList.add(field5);
66 
67 
68         return fieldList;
69     }
View Code

              3、 核心方法

 1 /**
 2      * 根据指定字段对对象进行排序
 3      *
 4      * @param fieldList 存放对象的数组
 5      * @param sortType  是升序还是降序,1:升序,-1降序
 6      * @return 排序后的数组
 7      */
 8     public static List<demo.pojo.Field> sortList(List<demo.pojo.Field> fieldList, int sortType) {
 9 
10 
11         if (sortType == -1) {
12 
13             fieldList.sort(new Comparator<demo.pojo.Field>() {
14 
15                 /**
16                  * 重写方法,按照指定字段排序
17                  * @param o1 第一个对象
18                  * @param o2 第二个对象
19                  * @return 比较结果
20                  */
21                 @Override
22                 public int compare(demo.pojo.Field o1, demo.pojo.Field o2) {
23 
24                     if (o2.getRecodeNumber() - o1.getRecodeNumber() > 0) {
25                         return 1;
26                     } else if (o2.getRecodeNumber() - o1.getRecodeNumber() < 0) {
27                         return -1;
28                     } else {
29                         return 0;
30                     }
31 
32                 }
33             });
34 
35         } else if (sortType == 1) {
36             fieldList.sort(new Comparator<demo.pojo.Field>() {
37 
38                 /**
39                  * 重写方法,按照指定字段排序
40                  * @param o1 第一个对象
41                  * @param o2 第二个对象
42                  * @return 比较结果
43                  */
44                 @Override
45                 public int compare(demo.pojo.Field o1, demo.pojo.Field o2) {
46 
47                     if (o1.getRecodeNumber() - o2.getRecodeNumber() > 0) {
48                         return 1;
49                     } else if (o1.getRecodeNumber() - o2.getRecodeNumber() < 0) {
50                         return -1;
51                     } else {
52                         return 0;
53                     }
54                 }
55             });
56         }
57 
58         return fieldList;
59     }
View Code

              4、 测试

 1  public static void main(String[] args) {
 2 
 3         List<Field> fieldList = getDemoData();
 4 
 5         // 打印当前数组样式
 6         System.out.println("排序前:" + new Gson().toJson(fieldList));
 7 
 8         // 升序排序
 9         fieldList = ListUtils.sortList(fieldList, 1);
10 
11         System.out.println("排序后:" + new Gson().toJson(fieldList));
12 
13 
14     }
View Code
  • 环境准备 (Prerequisite):

                  JDK1 .8

  • 安装 (Installation):

                  IDEA 2019

  • 存在问题 (Configuration):

                  暂无

  • 进阶篇 (Advanced):

                  待续......

原文地址:https://www.cnblogs.com/liuyangfirst/p/13809135.html