zoukankan      html  css  js  c++  java
  • Java:List集合内的对象进行排序

    List集合中的对象进行排序,除了for外,还有java的Collections对象来对摸个集合进行排序的用法。

    比如说我有一个List集合,集合元素为:

    public class TaskAutoExecutePlan{
        private String id = null;
        private AutoExecutePlanType autoExecutePlanType;
        private TaskStatus taskStatus;
        private String parameters;
        private Date createDate;
        private Date completeDate;
        private Date modifyDate;
    
    
        /**get set 方法*/
    }
    
    public enum  AutoExecutePlanType {
        ImportSiteCellParameter(2),
        WIFI(32);
        /*构造函数等*/
    }

    如果我需要先按照AutoExecutePlanType进行升序排序,在对CreateDate进行升序排序,使用Collections.sort()该怎么实现呢?

     1 public static void main(String[] args) {
     2     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");
     3     Date now = new Date();
     4     List<TaskAutoExecutePlan> items = new ArrayList<>();
     5 
     6     try {
     7         Thread.sleep(10000);
     8     } catch (InterruptedException e) {
     9         e.printStackTrace();
    10     }
    11 
    12     TaskAutoExecutePlan plan = new TaskAutoExecutePlan();
    13     plan.setId(UUID.randomUUID().toString());
    14     plan.setCreateDate(new Date());
    15     plan.setAutoExecutePlanType(AutoExecutePlanType.ImportSiteCellParameter);
    16     items.add(plan);
    17 
    18 
    19     plan = new TaskAutoExecutePlan();
    20     plan.setId(UUID.randomUUID().toString());
    21     plan.setCreateDate(now);
    22     plan.setAutoExecutePlanType(AutoExecutePlanType.ImportSiteCellParameter);
    23     items.add(plan);
    24 
    25     plan = new TaskAutoExecutePlan();
    26     plan.setId(UUID.randomUUID().toString());
    27     plan.setCreateDate(now);
    28     plan.setAutoExecutePlanType(AutoExecutePlanType.WIFI);
    29     items.add(plan);
    30 
    31     plan = new TaskAutoExecutePlan();
    32     plan.setId(UUID.randomUUID().toString());
    33     plan.setCreateDate(new Date());
    34     plan.setAutoExecutePlanType(AutoExecutePlanType.WIFI);
    35     items.add(plan);
    36 
    37     System.out.println("before sort:");
    38     for (TaskAutoExecutePlan item : items) {
    39         System.out.println(item.getId() + ":" + item.getAutoExecutePlanType() + ":" + format.format(item.getCreateDate()));
    40     }
    41 
    42     Collections.sort(items, new Comparator<TaskAutoExecutePlan>() {
    43         @Override
    44         public int compare(TaskAutoExecutePlan o1, TaskAutoExecutePlan o2) {
    45             int i = o1.getAutoExecutePlanType().getValue() - o2.getAutoExecutePlanType().getValue();
    46             if (i == 0) {
    47                 if (o1.getCreateDate().equals(o2.getCreateDate())) {
    48                     return 0;
    49                 } else if (o1.getCreateDate().after(o2.getCreateDate())) {
    50                     return 1;
    51                 } else {
    52                     return -1;
    53                 }
    54             }
    55             return i;
    56         }
    57     });
    58 
    59     System.out.println("after sort:");
    60     for (TaskAutoExecutePlan item : items) {
    61         System.out.println(item.getId() + ":" + item.getAutoExecutePlanType() + ":" + format.format(item.getCreateDate()));
    62     }
    63 }

    输出结果:

    before sort:
    252409be-1bb2-4502-8796-167b43d8de92:ImportSiteCellParameter:2017-02-27 19:36:11.000320
    fd7dc92b-b0f4-423a-8644-d95ea0bc6cab:ImportSiteCellParameter:2017-02-27 19:36:00.000294
    42bc8d28-90c4-4563-83a3-215c38bc0f9e:WIFI:2017-02-27 19:36:00.000294
    d25d4201-f776-4b5f-bf33-8b1f8b80c412:WIFI:2017-02-27 19:36:11.000327
    after sort:
    fd7dc92b-b0f4-423a-8644-d95ea0bc6cab:ImportSiteCellParameter:2017-02-27 19:36:00.000294
    252409be-1bb2-4502-8796-167b43d8de92:ImportSiteCellParameter:2017-02-27 19:36:11.000320
    42bc8d28-90c4-4563-83a3-215c38bc0f9e:WIFI:2017-02-27 19:36:00.000294
    d25d4201-f776-4b5f-bf33-8b1f8b80c412:WIFI:2017-02-27 19:36:11.000327

  • 相关阅读:
    vsftpd用户登陆目录
    Linux下能否用用apache运行ASP.NET的WebService
    rose软件下载(Rational Rose 2003 Enterprise Edition)
    linux删除目录
    2013314 生活日记
    ubuntu12.10安装GTK+
    SqlServer 基础知识数据检索、查询排序
    获取时间段:本周、本月、本年
    二、自定义控件之RadioButtonList
    ext.net 开发学习之FileUploadField与Image (四)
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/6475998.html
Copyright © 2011-2022 走看看