list对象排序java_Java:List集合内的对象进行排序

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

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

public classTaskAutoExecutePlan{private String id = null;privateAutoExecutePlanType autoExecutePlanType;privateTaskStatus taskStatus;privateString parameters;privateDate createDate;privateDate completeDate;privateDate modifyDate;/**get set 方法*/}public enumAutoExecutePlanType {

ImportSiteCellParameter(2),

WIFI(32);/*构造函数等*/}

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

1 public static voidmain(String[] args) {2 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSSSS");3 Date now = newDate();4 List items = new ArrayList<>();5

6 try{7 Thread.sleep(10000);8 } catch(InterruptedException e) {9 e.printStackTrace();10 }11

12 TaskAutoExecutePlan plan = newTaskAutoExecutePlan();13 plan.setId(UUID.randomUUID().toString());14 plan.setCreateDate(newDate());15 plan.setAutoExecutePlanType(AutoExecutePlanType.ImportSiteCellParameter);16 items.add(plan);17

18

19 plan = newTaskAutoExecutePlan();20 plan.setId(UUID.randomUUID().toString());21 plan.setCreateDate(now);22 plan.setAutoExecutePlanType(AutoExecutePlanType.ImportSiteCellParameter);23 items.add(plan);24

25 plan = newTaskAutoExecutePlan();26 plan.setId(UUID.randomUUID().toString());27 plan.setCreateDate(now);28 plan.setAutoExecutePlanType(AutoExecutePlanType.WIFI);29 items.add(plan);30

31 plan = newTaskAutoExecutePlan();32 plan.setId(UUID.randomUUID().toString());33 plan.setCreateDate(newDate());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 intcompare(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 returni;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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值