前言

一、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 自定义复杂排序相关推荐

  1. 【Java 8 新特性】Java Comparator.naturalOrder | 自然排序

    Java Comparator.naturalOrder | 自然排序 与 Stream.sorted 一起使用 与 Collections.sort 一起使用 与 List.sort 一起使用 与 ...

  2. 【Java 8 新特性】Java Comparator.reversed | 倒序排序 - 默认方法

    Java Comparator.reversed | 倒序排序 - 默认方法 在 Stream.sorted 中使用 在 List.sort 中使用 在 Collections.sort 中使用 参考 ...

  3. 【Java 8 新特性】Java Comparator.reverseOrder | 倒序排序-静态方法

    文章目录 在 Stream.sorted 中使用 在 Collections.sort 中使用 在 List.sort 中使用 在 Arrays.sort 中使用 参考文献 Comparator.re ...

  4. java comparator 降序排序_【转】java comparator 升序、降序、倒序从源码角度理解

    原文链接:https://blog.csdn.net/u013066244/article/details/78997869 环境 jdk:1.7+ 前言 之前我写过关于comparator的理解,但 ...

  5. android自定义比较器,java – 使用自定义比较器排序的集合不起作用

    我创建了一个自定义Comparator来对字符串的ArrayList进行排序.我已通过调试器运行它并观察它正确比较和返回值.但是,我的数组没有排序.因为我不熟悉 Java& Android,可 ...

  6. java 怎么自定义排序_Java如何实现List自定义排序

    Java如何实现List自定义排序,自定义,即为,详细内容,相关文章,更多关于 Java如何实现List自定义排序 易采站长站,站长之家为您整理了Java如何实现List自定义排序的相关内容. 实体类 ...

  7. java 自定义对象 排序,使用自定义排序顺序对对象的ArrayList进行排序

    问题 我希望为我的地址簿应用程序实现一个排序功能. 我想排序anArrayList contactArray.Contact是一个包含四个字段的类:名称,家庭电话号码,手机号码和地址.我想排序name ...

  8. Java Map 自定义排序

    HashMap是不保证顺序的,要有顺序,要用LinkedHashMap,这是按照插入顺序排列的. Map接口的哈希表和链接列表实现,具有可预知的迭代顺序.此实现与HashMap的不同之处在于,后者维护 ...

  9. 【Java基础·Comparator多字段排序】

    [Java基础·Comparator多字段排序] 需求 对指定List按照 身份证号.姓名.入学时间倒序排列 版本1 package com.biaogexf.tools;import lombok. ...

最新文章

  1. 实用手册|史上最全的Pycharm快捷键操作
  2. 查看 -- tree
  3. 【BZOJ】 2463 [中山市选2009]谁能赢呢?(博弈论)
  4. SIFT特征提取-应用篇
  5. 【CV】OpenCV 入门之旅
  6. python版本切换_Ubuntu18.04下python版本完美切换的解决方法
  7. Sklearn参数详解—聚类算法
  8. java训练_Java练习
  9. 百度地图API的第一次接触
  10. matlab2c使用c++实现matlab函数系列教程-log10函数
  11. NET委托:一个C#睡前故事
  12. 一用就会Cron表达式生成器
  13. Vue项目中使用echarts教程
  14. oracle 索引优化
  15. 图像处理珍藏版本汇总
  16. Android知识体系导图
  17. cmd应对文件夹变成了exe
  18. 超好的赚钱方法 目前广告点击报酬最高的
  19. ce逆向修改——植物大战僵尸针对“阳光值”
  20. 蓝桥杯 并查集汇总学习 及其代码

热门文章

  1. 3.5mm 音频接口类型说明(3极和4极)耳机接口
  2. 免费稳定 = 网易云音乐API
  3. Hive(二)DDL DML DQL
  4. -- 37、查询不及格的课程
  5. 服务器系统架构的演变
  6. 爬虫(12,13)selenium练习 12306案例
  7. oracle如何查询上个月,Oracle SQL上月查询问题
  8. 电脑上什么软件可以录制视频
  9. 服务器内存插上显示器不亮,上两根内存条显示器就不亮了
  10. js实现点击空白部分隐藏div