摘要:
在日常開發中,經常會用到排序算法,這里記錄下日常使用比較多的排序方法,其中包括按指定指定:正序、倒序排序,還有按自定義字段排序的方法,方便日后查看;
一:按指定字段排序,默認倒序,如下寫法:
/**
* @description 對List集合按指定字段排序,默認倒序
* @author zhaoxinguo
* @date 2019/12/26
*/
private void sortList(List> platformDataStatistics) {
platformDataStatistics.sort(new Comparator>() {
@Override
public int compare(Map o1, Map o2) {
BigDecimal divideResult2 = (BigDecimal) o2.get("divideResult");
BigDecimal divideResult1 = (BigDecimal) o1.get("divideResult");
return divideResult2.compareTo(divideResult1);
}
});
}
二:按自定義順序排序,如下寫法(JDK1.8之前通過匿名內部類的實現方式):
/**
* @description 自定義排序規則,默認:京東、天貓、拼多多
* @author zhaoxinguo
* @date 2020/2/3
*/
private void customSortList(List> platformDataStatistics) {
// JDK1.8之前通過匿名內部類的實現方式
//這里的順序,是我自己定義的一個List
String[] regulation = {"京東","天貓","拼多多"};
final List regulationOrder = Arrays.asList(regulation);
Collections.sort(platformDataStatistics, new Comparator>() {
@Override
public int compare(Map o1, Map o2) {
String websiteName1 = (String) o1.get("websiteName");
String websiteName2 = (String) o2.get("websiteName");
int io1 = regulationOrder.indexOf(websiteName1);
int io2 = regulationOrder.indexOf(websiteName2);
return (io1 == -1 || io2 == -1) ? (io2 - io1) : (io1 - io2);
}
});
}
三:按自定義順序排序,如下寫法(JDK1.8之后使用Lambda表達式的基本排序實現方式):
/**
* @description 自定義排序規則,默認:京東、天貓、拼多多
* @author zhaoxinguo
* @date 2020/2/3
*/
private void customSortList(List> platformDataStatistics) {
// JDK1.8之后使用Lambda表達式的基本排序
List regulationOrder = Arrays.asList("通知公告", "信息公示", "機關黨建", "部門工作", "個性辦公", "涉臺輿情", "會議紀要", "學習園地", "機關文化", "下載專區", "通訊錄", "安全郵件");
platformDataStatistics.sort(Comparator.comparing(e -> regulationOrder.indexOf(e.get("NAME").toString())));
}
以上就是經常使用的排序方法。
注意:本文歸作者所有,未經作者允許,不得轉載