一、需求描述

  最近产品应客户要求提出了一个新的需求,有一个列表查询需要按照其中的多列进行排序。

二、需求分析

  由于数据总量不多,可以全部查询出来,因此我就考虑使用集合工具类Collections.sort来直接进行排序。

三、解决方案

  列表查询的数据量不多,可以全部直接查询出来才做这样进行处理。去百度里面看了一下,方法也很简单,首先写一个排序类,主要用途就是

用来进行逻辑处理。然后在调用时,传入原集合和排序类即可。方案确定后,立马开始进行写代码,最终写完的代码如下。

public class CustomComparator implements Comparator<InventoryCompareVO> {

private String sort;//排序标识

public String getSort() {
return sort;
}

public void setSort(String sort) {
this.sort = sort;
}

public CustomComparator(){ }

/* @Description: 单参数的构造方法
* @author: xxx
* @date: 2021/5/27 9:41
* @param: No such property: code for class: Script1
* @return:
*/
public CustomComparator(String sort){
this.sort = sort;
}

@Override
public int compare(InventoryCompareVO o1, InventoryCompareVO o2) {
//按照对比差异绝对值排序
int valueOne = o1.getInventoryVariance() != null ? o1.getInventoryVariance().intValue() : 0;
int valueTwo = o2.getInventoryVariance() != null ? o2.getInventoryVariance().intValue() : 0;
//求绝对值
valueOne = Math.abs(valueOne);
valueTwo = Math.abs(valueTwo);
if("desc".equals(this.sort)){
//降序
if(valueOne == 0 && valueTwo == 0){
//先按照企业库存排序
if(o1.getInventoryQty() != null && o2.getInventoryQty() != null){
return o2.getInventoryQty().compareTo(o1.getInventoryQty());
}else{
//在按照海关理论库存排序
if(o1.getSumDclQty() != null && o2.getSumDclQty() != null){
return o2.getSumDclQty().compareTo(o1.getSumDclQty());
}
}
return 1;
}else{
return valueTwo - valueOne;
}
}else if("asc".equals(this.sort)){
//升序
if(valueOne == 0 && valueTwo == 0){
//先按照企业库存排序
if(o1.getInventoryQty() != null && o2.getInventoryQty() != null){
return o1.getInventoryQty().compareTo(o2.getInventoryQty());
}else{
//在按照海关理论库存排序
if(o1.getSumDclQty() != null && o2.getSumDclQty() != null){
return o1.getSumDclQty().compareTo(o2.getSumDclQty());
}
}
return 1;
}else{
return valueOne - valueTwo;
}
}else{
return 1;
}
}
}

初始化的时候,还传递了一个参数,主要用来确定是降序还是升序。代码写好后,然后进行调用,

Collections.sort(list, new CustomComparator(String.valueOf(param.getSort())));
打包发布在测试后进行测试,程序正常运行,并且能够按照要求进行降序和升序,问题解决。

参考文章
https://www.cnblogs.com/longshiyVip/p/4882257.html

最新文章

  1. 数据库基础及T-SQL语句
  2. Yii2框架RESTful API教程(一) - 快速入门
  3. python基础——匿名函数
  4. JavaWeb基础: Web应用和Web服务器
  5. 小猪的Android入门之路 Day 7 part 2
  6. 【转】如何成为一位优秀的创业CEO
  7. 打开IIS的快捷键
  8. javascript 用函数语句和表达式定义函数的区别详解
  9. MySQL分数排名同分并列与不并列查询
  10. jmeter4.0的汉化
  11. #pragma multi_compile_fwdbase会增加很多个shader variants
  12. input标签让光标不出现
  13. Django自带的后台管理样式找不到的问题。
  14. jmeter接口自动化部署jenkins教程
  15. AndroidStudio工具将Module项目导出成Jar和arr库
  16. angular学习笔记(三十)-指令(2)-restrice,replace,template
  17. 关于C中函数传参的一点理解
  18. 注册google账号 解决国内手机注册失败的问题
  19. Security-OAuth2.0 密码模式之服务端实现
  20. directive 指令一

热门文章

  1. postgresql高级应用之行转列&amp;汇总求和
  2. hdu4494
  3. hdu1526 二分匹配+ floyd
  4. hdu 3062 基础的2sat
  5. hdu1074 状态压缩dp+记录方案
  6. Debuggee not connected 寒江孤钓&lt;&lt;windows 内核安全编程&gt;&gt; 学习笔记
  7. (Py练习)日期格式转换
  8. Tomcat启动乱码解决
  9. git修改远端仓库地址
  10. 高性能MySQL-索引