Java對List裏面的元素實現按指定字段排序的方法

摘要:
在日常開發中,經常會用到排序算法,這裏記錄下日常使用比較多的排序方法,其中包括按指定指定:正序、倒序排序,還有按自定義字段排序的方法,方便日後查看;

一:按指定字段排序,默認倒序,如下寫法:

/**
 * @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);
		}
	});
}

二:按自定義順序排序,如下寫法:

/**
 * @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);
		}
	});
}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章