# 根据指定字段对数组排序

• 简介 （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
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
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
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
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
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）：

暂无