JDK1.8 list 排序
阿新 • • 發佈:2019-01-26
首先用泛型為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());