博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java:List集合内的对象进行排序
阅读量:5244 次
发布时间:2019-06-14

本文共 3596 字,大约阅读时间需要 11 分钟。

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
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
() {43 @Override44 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

转载于:https://www.cnblogs.com/yy3b2007com/p/6475998.html

你可能感兴趣的文章
自定义EL函数
查看>>
stm32的电源
查看>>
splice的多种用法
查看>>
20162304 2017-2018-1 《程序设计与数据结构》第二周学习总结
查看>>
九.python面向对象(双下方法内置方法)
查看>>
2018-09-12
查看>>
go:channel(未完)
查看>>
[JS]递归对象或数组
查看>>
CSS与Theme的作用——Asp.Net
查看>>
LeetCode(17) - Letter Combinations of a Phone Number
查看>>
20165115 2017-2018-2 《Java程序设计》第四周学习总结
查看>>
Linux查找命令对比(find、locate、whereis、which、type、grep)
查看>>
WPF自定义集合控件概述与遇到的问题
查看>>
路由器外接硬盘做nas可行吗?
查看>>
python:从迭代器,到生成器,再到协程的示例代码
查看>>
pytest的参数化测试
查看>>
Java多线程系列——原子类的实现(CAS算法)
查看>>
安装Pygame和pip的艰辛之路
查看>>
Hibernate的实体类为什么需要实现 java.io.Serializable 接口
查看>>
在Ubuntu下配置Apache多域名服务器
查看>>