1. 程式人生 > >JDK1.8 list 排序

JDK1.8 list 排序

首先用泛型為String的list和泛型為AuditBO物件的list進行排序

 List<String> list = new ArrayList<>();
        list.add("2");
        list.add("1");
        list.add("4");
 List<AuditBO> AuditBOS = new ArrayList<>();

按照JDK1.8版本以下的方式來給list進行排序:

  Collections.sort(list, new Comparator<String>() {
       @Override
       public int compare(String s1, String s2) {
           return s1.compareTo(s2);
       }
  });
  Collections.sort(AuditBOS, new Comparator<AuditBO>() {
       @Override
       public int compare(AuditBO o1, AuditBO o2) {
           return o1.getAuditTime().compareTo(o2.getAuditTime());
       }
  });

 以上方法在idea中會出現提示我們可以使用lambda替換 new Comparator<String>(){} ,提示可以直接使用list.sort替代Collections.sort,改寫後:

list.sort((String s1, String s2) -> s1.compareTo(s2));
AuditBOS.sort((AuditBO b1,Audit b2) -> b1.getAuditTime().compareTo(b2.getAuditTime()));

 隨即又出現提示:建議我們使用Comparator.comparing

 改寫後: 

list.sort(Comparator.comparing(String::valueOf));
AuditBOS.sort(Comparator.comparing(AuditBO::getAuditTime));// 泛型為AuditBO的物件list

Comparator.comparing的預設排序是正序排列 例如list輸出為:1 ,2 ,4

需要逆序排列只需要增加.reversed()

list.sort(Comparator.comparing(String::valueOf).reversed());
AuditBOS.sort(Comparator.comparing(AuditBO::getAuditTime).reversed());