Java Comparator 自定义复杂排序
前言
一、Comparator 是什么
二、基于 Comparator 对 List 进行排序
三、总结
前言
排序在业务逻辑中是非常重要的功能,下面是一个基于 Java 的自定义排序实践。
一、Comparator 是什么
Comparator 是 Java 中的接口,位于 java.util 包下。
二、基于 Comparator 对 List<JSONObject> 进行排序
在 Java JDK 中默认的是升序,即
"> return 1"
"< return -1"
"= return 0"
因此,降序就是
"> return -1"
"< return 1"
"= return 0"
import com.alibaba.fastjson.JSONObject;import java.util.*;class TestTest {public static void main(String[] args) {JSONObject jsonObject1 = new JSONObject();jsonObject1.put("a", 2);jsonObject1.put("b", 2);JSONObject jsonObject2 = new JSONObject();jsonObject2.put("a", 1);jsonObject2.put("b", 3);JSONObject jsonObject3 = new JSONObject();jsonObject3.put("a", 4);jsonObject3.put("b", 0);JSONObject jsonObject4 = new JSONObject();jsonObject4.put("a", 4);jsonObject4.put("b", -1);List<JSONObject> list = new ArrayList<>();list.add(jsonObject1);list.add(jsonObject2);list.add(jsonObject3);list.add(jsonObject4);System.out.println(list);Comparator<JSONObject> comparator = new MyComparator();list.sort(comparator);System.out.println(list);}
}class MyComparator implements Comparator<JSONObject> {@Overridepublic int compare(JSONObject o1, JSONObject o2) {int o1a = o1.getIntValue("a");int o2a = o2.getIntValue("a");int o1b = o1.getIntValue("b");int o2b = o2.getIntValue("b");if (o1a > o2a) {return 1;} else if (o1a < o2a) {return -1;} else {if (o1b > o2b) {return -1;} else if (o1b < o2b) {return 1;} else {return 0;}}}
}
三、总结
以上是自定义排序的一种简单实践,具体还需根据实践进行更复杂的排序。
Java Comparator 自定义复杂排序相关推荐
- 【Java 8 新特性】Java Comparator.naturalOrder | 自然排序
Java Comparator.naturalOrder | 自然排序 与 Stream.sorted 一起使用 与 Collections.sort 一起使用 与 List.sort 一起使用 与 ...
- 【Java 8 新特性】Java Comparator.reversed | 倒序排序 - 默认方法
Java Comparator.reversed | 倒序排序 - 默认方法 在 Stream.sorted 中使用 在 List.sort 中使用 在 Collections.sort 中使用 参考 ...
- 【Java 8 新特性】Java Comparator.reverseOrder | 倒序排序-静态方法
文章目录 在 Stream.sorted 中使用 在 Collections.sort 中使用 在 List.sort 中使用 在 Arrays.sort 中使用 参考文献 Comparator.re ...
- java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解
原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境 jdk:1.7+ 前言 之前我写过关于comparator的理解,但 ...
- android自定义比较器,java – 使用自定义比较器排序的集合不起作用
我创建了一个自定义Comparator来对字符串的ArrayList进行排序.我已通过调试器运行它并观察它正确比较和返回值.但是,我的数组没有排序.因为我不熟悉 Java& Android,可 ...
- java 怎么自定义排序_Java如何实现List自定义排序
Java如何实现List自定义排序,自定义,即为,详细内容,相关文章,更多关于 Java如何实现List自定义排序 易采站长站,站长之家为您整理了Java如何实现List自定义排序的相关内容. 实体类 ...
- java 自定义对象 排序,使用自定义排序顺序对对象的ArrayList进行排序
问题 我希望为我的地址簿应用程序实现一个排序功能. 我想排序anArrayList contactArray.Contact是一个包含四个字段的类:名称,家庭电话号码,手机号码和地址.我想排序name ...
- Java Map 自定义排序
HashMap是不保证顺序的,要有顺序,要用LinkedHashMap,这是按照插入顺序排列的. Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现与HashMap的不同之处在于,后者维护 ...
- 【Java基础·Comparator多字段排序】
[Java基础·Comparator多字段排序] 需求 对指定List按照 身份证号.姓名.入学时间倒序排列 版本1 package com.biaogexf.tools;import lombok. ...
最新文章
- 实用手册|史上最全的Pycharm快捷键操作
- 查看 -- tree
- 【BZOJ】 2463 [中山市选2009]谁能赢呢?(博弈论)
- SIFT特征提取-应用篇
- 【CV】OpenCV 入门之旅
- python版本切换_Ubuntu18.04下python版本完美切换的解决方法
- Sklearn参数详解—聚类算法
- java训练_Java练习
- 百度地图API的第一次接触
- matlab2c使用c++实现matlab函数系列教程-log10函数
- NET委托:一个C#睡前故事
- 一用就会Cron表达式生成器
- Vue项目中使用echarts教程
- oracle 索引优化
- 图像处理珍藏版本汇总
- Android知识体系导图
- cmd应对文件夹变成了exe
- 超好的赚钱方法 目前广告点击报酬最高的
- ce逆向修改——植物大战僵尸针对“阳光值”
- 蓝桥杯 并查集汇总学习 及其代码