java自定义排序规则

java自定义排序规则

背景:开发的一个查询功能,主要字段:账号、币种等,业务提供了一个显示顺序,没有什么规则的排序,例如 3,1,6,2 无规则的顺序
思路:通过提供的顺序来指定排序规则

代码:

/**通过提供的顺序,把他们放在list中,表中主键是账号和币种,我就把他们联合起来,这样list中就不会有重复的,就能保证他们的顺序是唯一的*/
List<String> acctOrder = Arrays.asList("1235564-USD", "8524526-JPY", "9652485-CAD");

/**排序方法的入口*/
private void sortResult(List<T> resultlist) {
Collections.sort(resultlist, new AcctComparator());
}


/**自定义一个比较器,T 为比较的类型,可以是String,Integer,也可以是自己定义的对象类型*/
private class AcctComparator implements Comparator<T> {
@Override
public int compare(T o1, T o2) {
int index1 = acctOrder.indexOf(o1.getActAcct() + "-" + o1.getCcy());
int index2 = acctOrder.indexOf(o2.getActAcct() + "-" + o2.getCcy());
/* 如果都不在排序的list中,按照 账号-币种 排序 ,如果不做此判断,当他们都是-1时,可能会报:comparison method violates its general contract(违反了比较方法的一般约定)*/
if (index1 == -1 && index2 == -1) {
return (o1.getActAcct() + "-" + o1.getCcy()).compareTo(o2.getActAcct() + "-" + o2.getCcy());
/* 如果o1不在,放后面 */
} else if (index1 == -1) {
return 1;
/* 如果o2不在,放前面 */
} else if (index2 == -1) {
return -1;
/* 如果都存在,按照所在的顺序排序 */
} else {
return Integer.compare(index1, index2);
}
}
}

总结:通过自定义的排序规则,这样就可以给查到的数据排序了。不过如果是分页查的数据,一定要先查出所有的数据,通过此方法排序后自己去截取数组返回,不然查的数据已经分页过,再排序是没有意义的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux 内核复合页(compound page)原理分析

源码基于&#xff1a;Linux5.15 约定&#xff1a; 芯片架构&#xff1a;ARM64内存架构&#xff1a;UMACONFIG_ARM64_VA_BITS&#xff1a;39CONFIG_ARM64_PAGE_SHIFT&#xff1a;12CONFIG_PGTABLE_LEVELS &#xff1a;3 1. 简介 复合页(Compound Page) 只是将两个或更多物理上…

【笔试强训】DFS、优先队列、滑动窗口笔试题目!

文章目录 1. 单词搜索2. 除 2 操作3. dd 爱框框 1. 单词搜索 题目链接 解题思路&#xff1a; DFS (深度优先遍历)&#xff0c;用一个 pos 记录要匹配单词 word 的位置&#xff0c;每次与 pos 进行匹配判断&#xff08;这样做的好处是不用把答案存下来&#xff09; 注意细节…

算法:期望场景;鲁棒优化

部分代码 for i1:T stst[D_DGk(i)*min_P_DG<P_DGk(i)<D_DGk(i)*max_P_DG]; end for i2:T indicatorD_DGk(i)-D_DGk(i-1); rangei:min(T,iT_up-1); st st[D_DGk(range)>indicator]; end for i2:T indicatorD_DGk(i-1)-D_DGk(i); rangei:min(T…

时序分解 | Matlab实现TVF-EMD时变滤波器的经验模态分解信号分量可视化

时序分解 | Matlab实现TVF-EMD时变滤波器的经验模态分解信号分量可视化 目录 时序分解 | Matlab实现TVF-EMD时变滤波器的经验模态分解信号分量可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现TVF-EMD(时变滤波器的经验模态分解)可直接替换 Matlab语言 1.…

IDEA远程调试debug

IDEA远程调试debug jar包启动脚本配置IDEA配置 通俗的说&#xff1a;本地有代码&#xff0c;服务器项目出现问题&#xff0c;环境的中间件配置不同&#xff0c;用idea远程调试&#xff0c;能快速定位问题&#xff0c;解决问题。 jar包启动脚本配置 jdk5-8写法 java -Xdebug -…

xftp、xshell连不上虚拟机解决方法

一、检查连接虚拟机ip看是否正确 查看虚拟机系统 IP ifconfig 二、检查虚拟机防火墙是否关闭 查看防火墙状态(ubuntu) sudo ufw status 关闭防火墙 sudo ufw disable 查看防火墙状态(centos) systemctl status firewalld.service 关闭防火墙 systemctl stop firewalld.se…

基于Python dlib的实时人脸识别,附源码

博主介绍&#xff1a;✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&#x1f3…

【STM32】西南交大嵌入式系统设计实验:环境配置

把走过的坑记录一下&#xff0c;希望后来人避坑 No ST-Link device detected.问题解决 如果跟着指导书出现这个问题&#xff1a; 直接跳过这一步不用再更新固件&#xff0c;后面直接创建项目写程序就行了。 在keil里配置成用DAP_link即可。 详细的可以看这篇文章&#xff1a…

30. 【Android教程】吐司提示:Toast 的使用方法

在使用 Android 手机的时候&#xff0c;有没有遇到过如图中这种类型的消息提示&#xff1f; 这个在 Android 中被称为 Toast&#xff0c;用来短暂的展示一些简短的提示信息。相比弹窗来讲它对用户的打扰更小&#xff0c;在提示一段时间之后会自动消失&#xff0c;通常用来提示当…

【Python-基础】字符串合集

字符串格式化 f # 例如: # f{train_path}/{f}: 将train_path字符串和f字符串结合 # f{root}.csv:将root字符串和.csv字符串结合判断字符串是否以…结尾 root.endswith(".csv") # True未待完续…

java 溯本求源之基础(十七)之Monitoring--jstatd

目录 1.简介 2.jstatd 命令概述 2.1功能和工作原理 2.2 使用场景 2.3 运行条件 3.命令行选项解析 3.1常用选项 4. 实际应用示例 4.1 内部 RMI 注册表配置 4.1.1 基础示例&#xff1a; 4.1.2 外部 RMI 注册表配置 4.1.3启用 RMI 日志记录 5.总结 1.简介 jstatd 是 Jav…

Abp中ef操作新增重复子级数据问题

在偶然开发中&#xff0c;导入的多条数据中&#xff0c;可能都存在同一个字段生成主外键关联子级数据的逻辑&#xff0c;此时循环去生成子级数据&#xff0c;会导致重复添加子级数据&#xff0c;有点绕吧&#xff0c;那就那实例说吧 如下&#xff1a;实现导入两条论文数据&…

【贪心算法】发饼干问题详解python

作者介绍&#xff1a;10年大厂数据\经营分析经验&#xff0c;现任大厂数据部门负责人。 会一些的技术&#xff1a;数据分析、算法、SQL、大数据相关、python 欢迎加入社区&#xff1a;码上找工作 作者专栏每日更新&#xff1a; LeetCode解锁1000题: 打怪升级之旅 python数据分析…

暴雨智算中心解决方案助跑人工智能新赛道

ChatGPT、Sora等AI大模型应用让人工智能热潮迭起&#xff0c;越来越多的科技企业纷纷入局&#xff0c;竞跑AI和大模型新赛道。2024年中国《政府工作报告》也指出&#xff0c;人工智能成为新质生产力的重要代表&#xff0c;将持续开展“人工智能 ”行动。与此同时&#xff0c;以…

糖尿病可能是一团虚火,肝肾同源,肝阴不足。

其实对于很多的糖尿病患者来说&#xff0c;他的问题本质可能是一团虚火&#xff0c;就拿前段时间我的门诊一个患者为例&#xff0c;之前患有高血压&#xff0c;总是眩晕烦躁&#xff0c;常常失眠&#xff0c;大概近四个月出现多饮、多尿怎么喝水也不解渴&#xff0c;经过检查确…

CSS导读 (CSS的三大特性 上)

&#xff08;大家好&#xff0c;今天我们将继续来学习CSS的相关知识&#xff0c;大家可以在评论区进行互动答疑哦~加油&#xff01;&#x1f495;&#xff09; 目录 五、CSS的三大特性 5.1 层叠性 5.2 继承性 5.2.1 行高的继承 5.3 优先级 小练习 五、CSS的三大特性 …

5.最长回文子串

题目&#xff1a; 给你一个字符串 s&#xff0c;找到 s 中最长的回文子串。 如果字符串的反序与原始字符串相同&#xff0c;则该字符串称为回文字符串。 示例 1&#xff1a; 输入&#xff1a;s "babad" 输出&#xff1a;"bab" 解释&#xff1a;"…

IDEA中SVN 的使用

文章目录 前言一、svn安装二、IDEA集成SVN总结 前言 svn可以老牌的代码仓库了 说实话svn还是和git无法相比的,毕竟git有本地仓库的概念,可以很好的处理冲突,然而svn是没有本地仓库的概念的,所以只能拉取别人的代码,然后处理冲突后,才能提交代码; 由于最近的工作换成了用svn仓…

2024香港Web3嘉年华:Web3的两大支柱是区块链和AI

2024香港Web3嘉年华&#xff1a;Web3的两大支柱是区块链和AI 4月9日&#xff0c;香港Web3嘉年华落下帷幕圆满收官。这场盛会延续了往年的火爆&#xff0c;保留了社交和打卡元素。大批加密货币从业者齐聚一堂&#xff0c;在多方碰撞中&#xff0c;共同探讨香港与加密的未来之路…

面试 Java 基础八股文十问十答第二十五期

面试 Java 基础八股文十问十答第二十五期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;如何判断对象可以被…