List自定义排序(可多条件)
1:先建需要排序的属性Model
package com.msqsoft.app.queuing.util; public class ListOrderByModel { private String queueNumber; private Integer status; public String getQueueNumber() {
return queueNumber;
} public void setQueueNumber(String queueNumber) {
this.queueNumber = queueNumber;
} public Integer getStatus() {
return status;
} public void setStatus(Integer status) {
this.status = status;
} public ListOrderByModel(String queueNumber, Integer status){
this.queueNumber = queueNumber;
this.status = status;
}
}
2:建立排序 Util 定义排序方式 需实现 Comparator
package com.msqsoft.app.queuing.util; import java.util.Comparator; public class ListOrderByComparatorModelUtil implements Comparator { @Override
public int compare(Object obj1, Object obj2) { ListOrderByModel orderByModel1 = (ListOrderByModel)obj1;
ListOrderByModel orderByModel2 = (ListOrderByModel)obj2; // 先排序status
if (orderByModel1.getStatus() > orderByModel2.getStatus()) {
return -1;
} else if (orderByModel1.getStatus() < orderByModel2.getStatus()) {
return 1;
} else {
// 排序号码
return orderByModel1.getQueueNumber().compareTo(orderByModel2.getQueueNumber());
}
} }
3 : 测试
package web; import java.text.Collator;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List; import com.msqsoft.app.queuing.util.ListOrderByComparatorModelUtil;
import com.msqsoft.app.queuing.util.ListOrderByModel; public class Test1 {
@SuppressWarnings("unchecked")
public static void main(String[] args) throws ParseException { List list = new ArrayList();
list.add(new ListOrderByModel("A002", 0));
list.add(new ListOrderByModel("A001", 0));
list.add(new ListOrderByModel("A003", 0));
list.add(new ListOrderByModel("A006", 6));
list.add(new ListOrderByModel("A004", 0));
list.add(new ListOrderByModel("A008", 5));
list.add(new ListOrderByModel("A005", 0));
list.add(new ListOrderByModel("A007", 6)); ListOrderByComparatorModelUtil comparator = new ListOrderByComparatorModelUtil();
Collections.sort(list, comparator);
for (int i = 0; i < list.size(); i++) {
ListOrderByModel listMode = (ListOrderByModel) list.get(i);
System.out.println(listMode.getStatus() + "," + listMode.getQueueNumber());
}
}
}
List自定义排序(可多条件)的更多相关文章
- mysql查询区分大小写与自定义排序
mysql查询区分大小写: SELECT id,developer FROM products WHERE developer != '' and developer = binary('LYNN') ...
- List<T>集合的Sort自定义排序用法简单解析
List<T>集合的Sort自定义排序用法简单解析: 如下:一系列无序数字,如果想要他们倒序排列,则使用如下代码: 那么如何理解这段代码呢? (x,y)表示相邻的两个对象,如果满足条件:x ...
- .NET/C#中对自定义对象集合进行自定义排序的方法
一个集合可否排序,要看系统知不知道排序的规则,像内建的系统类型,int ,string,short,decimal这些,系统知道怎么排序,而如果一个集合里面放置的是自定义类型,比如自己定义了一个Car ...
- Easyui datagrid自定义排序
做项目遇到个关于排序问题,想着在前端排序,正好Easyui有这个功能,所以就拿来用了一下,因为跟官网的Demo不太一样,所以总结一下: 首先这一列是要排序的列(当然,在生产环境,这一列是隐藏的,在开发 ...
- MySQL、Oracle、DB2等数据库常规排序、自定义排序和按中文拼音字母排序
MySQL常规排序.自定义排序和按中文拼音字母排序,在实际的SQL编写时,我们有时候需要对条件集合进行排序. 下面给出3中比较常用的排序方式,mark一下 1.常规排序ASC DESC ASC 正序 ...
- Python:Base4(map,reduce,filter,自定义排序函数(sorted),返回函数,闭包,匿名函数(lambda) )
1.python把函数作为参数: 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数: def add(x, y, f): return f(x) + f(y) 如果传入abs作为参数 ...
- Django项目:CRM(客户关系管理系统)--34--26PerfectCRM实现King_admin自定义排序
ordering = ['-qq'] #自定义排序,默认'-id' #base_admin.py # ————————24PerfectCRM实现King_admin自定义操作数据———————— f ...
- Java集合框架实现自定义排序
Java集合框架针对不同的数据结构提供了多种排序的方法,虽然很多时候我们可以自己实现排序,比如数组等,但是灵活的使用JDK提供的排序方法,可以提高开发效率,而且通常JDK的实现要比自己造的轮子性能更优 ...
- DataTable自定义排序
使用JQ DataTable 的时候,希望某列数据可以进行自定义排序,操作如下:(以中文排序和百分比排序为例) 1:定义排序类型: //百分率排序 jQuery.fn.dataTableExt.oSo ...
- 干货之UICollectionViewFlowLayout自定义排序和拖拽手势
使用UICollectionView,需要使用UICollectionViewLayout控制UICollectionViewCell布局,虽然UICollectionViewLayout提供了高度自 ...
随机推荐
- DSB
Linux day01 计算机硬件知识整理 作业要求:整理博客,内容如下 编程语言的作用及与操作系统和硬件的关系 应用程序->操作系统->硬件 cpu->内存->磁盘 cpu与 ...
- collections模块
collections模块在内置数据类型(dict.list.set.tuple)的基础上,还提供了几个额外的数据类型:ChainMap.Counter.deque.defaultdict.named ...
- java String正则表达式
1.正则表达式 字符串替换, 例子; String s="131hello334thrid ".replaceAll("[a-zA-Z]"," ...
- Brup Suite 渗透测试笔记(七)
继续接上次笔记: 1.Burp Intruder的payload类型的子模块(Character blocks)使用一种给出的输入字符,根据指定的设置产生指定大小的字符块,表现形式为生成指定长度的字符 ...
- 状态压缩dp小结
最近一段时间算是学了一些状态压缩的题目,在这里做个小结吧 首先是炮兵布阵类题目,这类题目一开始给定一个矩形,要求在上面放置炮兵,如果在一格放了炮兵那么周围的某些格子就不能放炮兵,求最大能放置炮兵的数量 ...
- Git使用五:回到过去
reset:将仓库里面的内容恢复回暂存区,类似于从仓库里检出文件到暂存区checkout:将暂存区的文件恢复回工作区,即,把暂存区的文件检出到工作区 下面是之前三次提交的内容 三个区域的文件状态: 执 ...
- vue项目中 axios 和Vue-axios的关系
文章收集于:https://segmentfault.com/q/1010000010812113 在vue项目中,会经常看到如下代码: 今天看到有些项目是这样写的,就有点看不懂了. ----解 ...
- 有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'}
题目:有一个字典对象,d = {'a':1,'b':2},请用尽量简洁的代码将d转换成{1: 'a', 2: 'b'} 第一种方法: d = {'a': 1, 'b': 2}d = {value: k ...
- 升级 Apache Tomcat的办法
1.下载最新的7系列tomcat cd /usr/local/software wget https://www-us.apache.org/dist/tomcat/tomcat-7/v7.0.92/ ...
- LeetCode高频148错题记录
3. Max Points on a Line 共线点个数3种解法 思路一:思考如何确定一条直线,两点法,确定斜率后带入一点.有三种情况,1. 两点重合,2. 斜率不存在,3. 正常算,依次以每个点为 ...