zoukankan      html  css  js  c++  java
  • 根据指定字段对数组排序

    • 简介 (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):

                      待续......

  • 相关阅读:
    安装MySQLdb
    树莓派及其他硬件平台国内外Linux镜像站全汇总
    rpc使用举例
    SAE上安装第三方模块
    【Java】Map
    【Java】判断字符串是否含字母
    【Android Studio】提示代码忽略大小写
    【iOS】Xcode 离线文档
    【iOS】iOS main() 简介
    【eclipse】No enclosing instance of type A is accessible. Must qualify the allocation with an enclosing instance of type A
  • 原文地址:https://www.cnblogs.com/liuyangfirst/p/13809135.html
Copyright © 2011-2022 走看看