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

时间: 2024-10-02 23:59:08

Java:List集合内的对象进行排序的相关文章

java web 程序---内置对象application的log方法的使用

application的主要方法里,有log方法,是日志文件里可以查看到信息的. 当老师写好代码后,他发现在tomact里的log目录下找不到信息,原因是:我们用myeclipse这个客户端软件,应该把服务器关闭,而是去bin目录下,手动开启服务器 即startup.bat.这个文件,然后在log目录下查到了信息: 这里有截图,我输入的用户名,这里当程序运行后是个空白页面,只有到log目录下才可以查看到信息. 代码: login.jsp ? 1 2 3 4 5 6 7 <body>     &

对list集合中的对象进行排序(转载)

原文链接:http://blog.csdn.net/veryisjava/article/details/51675036 Collections对List集合中的数据进行排序 有时候需要对集合中的元素按照一定的规则进行排序,这就需要用到 Java中提供的对集合进行操作的工具类Collections,其中的sort方法 先看一个简单的例子: public static void main(String[] args) { List<Integer> nums = new ArrayList&l

Java EE JSP内置对象及表达式语言

一.JSP内置对象 JSP根据Servlet API规范提供了一些内置对象,开发者不用事先声明就可使用标准变量来访问这些对象. JSP提供了9种内置对象: (一).request 简述: JSP编程中最常用的对象,代表来自客户端的请求,调用request对象相应的方法可以获取关于客户请求的信息. 常见方法的用法示例: 1 <font size=5> 2 <br>客户端使用的协议是: 3 <% 4 String protocol = request.getProtocol();

Java Server Pages 内置对象

JSP九大内置对象: a.JSP内置对象是Web容器创建的一组对象,[不使用new关键字]就可以使用的内置对象.例如:out b.JSP九大内置对象: 五大常用对象:   out,request,response,session,application 其余四大对象:   Page,pageContext,exception,config 1.out内置对象: 2.request内置对象,常用方法如下: request 对象是 javax.servlet.httpServletRequest类型

根据List集合中的对象属性排序

首先创建一个Student对象,里面有三个属性,分别是int类型,String类型,Date类型 package com.sinoway.cisp.test; import java.text.SimpleDateFormat; import java.util.Date; public class Student { private int age; private String name; private Date birthday; public int getAge() { return

9.Java web&mdash;JSP内置对象

容器内置了9大对象,这些对象在jsp页无需实例化,可以直接使用. 分别为request. response .session. application .out. pageContext .config .page. exception 1)request对象 request封装了由客户端请求的http所有细节,包括HTTP头信息,系统信息,请求方式,请求参数 request.getParameter("参数name");  //获取请求的url参数.不存在此参数返回null,存在参数

实现java.util.Comparator接口,对对象集合进行多属性组合排序

Commons - BeanUtils 提供了很多功能,其中一个很有用的是对对象集合进行排序,如Collections.sort(peoples, new BeanComparator("age")); 另外,可以使用java.util.Collections的sort方法可以对collection集合进行排序,包括多列组合排序,下面是自己实现java.util.Comparator,定制对象属性排序规则的例子: package com.lph.test; import java.ut

谈谈Java的集合组件

让我们一起谈谈Java的集合组件 我们在使用Java的时候,都会遇到并使用到Java的集合.在这里通过自己的理解和网上的资源对Java的集合方面的使用做一个简单的讲解和总结. Java主要分为3个集合组件:Set(集).List(列表).Map(映射). Collection接口:Collection是最基本的集合接口,声明了适用于Java集合的通用方法.Set和List都继承了Collection,Map. Collection接口的方法: boolean add(Object o):向集合中

Java之集合初探(一)

一.集合概述.区别 集合是一种容器,数组也是一种容器 在Java编程中,装各种各样的对象(引用类型)的叫做容器. 为什么出现集合类? 面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,Java就提供了集合类. 数组和集合类同是容器,有何不同? A:长度区别 数组的长度固定 集合长度可变B:内容不同 数组存储的是同一种类型的元素 而集合可以存储不同类型的元素C:元素的数据类型问题 数组可以存储基本数据类型,也可以存储引用数据类型 集合只能存储引用类型 集合类的特点 集合只用于