Java对List里面的元素实现按指定字段排序的方法

摘要:
在日常开发中,经常会用到排序算法,这里记录下日常使用比较多的排序方法,其中包括按指定指定:正序、倒序排序,还有按自定义字段排序的方法,方便日后查看;

一:按指定字段排序,默认倒序,如下写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/**
* @description 对List集合按指定字段排序,默认倒序
* @author zhaoxinguo
* @date 2019/12/26
*/
private void sortList(List<Map<String, Object>> platformDataStatistics) {
platformDataStatistics.sort(new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> o2) {
BigDecimal divideResult2 = (BigDecimal) o2.get("divideResult");
BigDecimal divideResult1 = (BigDecimal) o1.get("divideResult");
return divideResult2.compareTo(divideResult1);
}
});
}

二:按自定义顺序排序,如下写法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/**
* @description 自定义排序规则,默认:京东、天猫、拼多多
* @author zhaoxinguo
* @date 2020/2/3
*/
private void customSortList(List<Map<String, Object>> platformDataStatistics) {
//这里的顺序,是我自己定义的一个List<String>
String[] regulation = {"京东","天猫","拼多多"};
final List<String> regulationOrder = Arrays.asList(regulation);
Collections.sort(platformDataStatistics, new Comparator<Map<String, Object>>() {
@Override
public int compare(Map<String, Object> o1, Map<String, Object> 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);
}
});
}

以上就是经常使用的排序方法。

MiCai wechat
扫一扫,关注微信订阅号
坚持原创技术分享,您的支持将鼓励我继续创作!