-
Java中List集合升序降序排序
2020-11-24 09:45:36就使用List的父类Collection自带的排序功能以实现需求 代码如下 // 排序 Collections.sort(formInfoList, new Comparator<FormInfo>() { @Override public int compare(FormInfo o1, FormInfo o2) { //按...在一般情况下SQL语句不好实现的排序
就使用List的父类Collection自带的排序功能以实现需求
代码如下,其中:
formInfoList:List集合对象
FormInfo:指定集合类对象// 排序 Collections.sort(formInfoList, new Comparator<FormInfo>() { @Override public int compare(FormInfo o1, FormInfo o2) { //按类型排序 int flag = o1.getType().compareTo(o2.getType()); //这是升降,前面为升序 o2.getName().compareTo(o1.getName()) ---》这是降序 (下面同理) //按标题排序 if (flag == 0) { flag = o1.getFormName().compareTo(o2.getFormName()); } //按部门排序 if (flag == 0) { flag = o1.getDepartment().compareTo(o2.getDepartment()); } //按员工编码排序 if (flag == 0) { flag = o1.getEmployee().compareToIgnoreCase(o2.getEmployee()); } /* //按工资排序 if(flag==0) { flag=(int)(o1.getSal()-o2.getSal()); }*/ return flag; } });
-
详细:JAVA 对集合list的实体按某一字段(如日期)排序(降序,Collections的sort方法)
2019-08-14 11:11:14明天写集合按某一字段排序。最近有时间,就整理整理自己做过的项目~这是某医院的微信网页开发项目。
话不多说,进入正题情景:现在有一个List,需要对病人每一次的体检记录(Quota)按照日期进行降序排序(即近期放在最前面) 而Collections的sort方法默认是升序排列,如果需要降序排列时就需要重写compare方法。
首先放出compare的注释
* @param o1 the first object to be compared. * @param o2 the second object to be compared. * @return a negative integer, zero, or a positive integer as the * first argument is less than, equal to, or greater than the * second. * @throws NullPointerException if an argument is null and this * comparator does not permit null arguments * @throws ClassCastException if the arguments' types prevent them from * being compared by this comparator. */ int compare(T o1, T o2);
也就是说默认o1和o2比较,如果o1-o2返回负数,则把o1放在o2前面。(升序)
Collections.sort(list, new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o1 - o2;//注意这一行代码 } });
可我现在要实现降序,那么思路应该是
Collections.sort(list, new Comparator<Integer>() { public int compare(Integer o1, Integer o2) { return o2 - o1;//注意这一行代码 } });
解释完compare方法,下面是该情景解决方案:
//按日期排序(降序) private void ListSort(List<Quota> list) { //Collections的sort方法默认是升序排列,如果需要降序排列时就需要重写compare方法 Collections.sort(list, new Comparator<Quota>() { @Override public int compare(Quota o1, Quota o2) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); try { //获取体检日期,并把其类型由String转成Date,便于比较。 Date dt1 = format.parse(o1.getDate()); Date dt2 = format.parse(o2.getDate()); //以下代码决定按日期降序排序,若将return“-1”与“1”互换,即可实现升序。 //getTime 方法返回一个整数值,这个整数代表了从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。 if (dt1.getTime() > dt2.getTime()) { return -1; } else if (dt1.getTime() < dt2.getTime()) { return 1; } else { return 0; } } catch (Exception e) { logger.info("日期排序出错:"+e); } return 0; } }); }
此外,还有一种实现方式:
list.sort(new Comparator<Student>() { @Override public int compare(Quota o1, Quota o2) { SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //获取体检日期,并把其类型由String转成Date,便于比较。 Date dt1 = format.parse(o1.getDate()); Date dt2 = format.parse(o2.getDate()); //以下代码决定按日期降序排序,若将return“-1”与“1”互换,即可实现升序。 //getTime 方法返回一个整数值,这个整数代表了从 1970 年 1 月 1 日开始计算到 Date 对象中的时间之间的毫秒数。 if (dt1.getTime() > dt2.getTime()) { return -1; } else if (dt1.getTime() < dt2.getTime()) { return 1; } else { return 0; } } });
以上便是全部过程,有啥问题,欢迎评论~~~(๑•ᴗ•๑)
觉得还不错可以点个赞哦~ 谢谢(๑•ᴗ•๑)
-
java 如何对 list 对象降序排列
2016-04-18 06:16:10Collections.sort(list, new Comparator(){ /* * int compare(Student o1, Student o2) 返回一个基本类型的整型, * 返回负数表示:o1 小于o2, * 返回0 表示:o1和o2相等, * 返回正数表示:o1大于o2... -
JAVA里List集合中的对象根据对象的某个属性值降序或者升序排序java8
2021-01-05 12:05:40import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<... //根据TestDto对象的priority字段降序排序 dtoList.sort(Copackage com.stream; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List<TestDto> dtoList=TestDto.getDtos(); //根据TestDto对象的priority字段降序排序 dtoList.sort(Comparator.comparing(TestDto::getPriority).reversed()); //根据TestDto对象的sort字段升序排序 // dtoList.sort(Comparator.comparing(TestDto::getSort)); for (TestDto d:dtoList ) { System.out.println(d); } } }
-
java comparator 降序排序_Java8 Comparator排序方法实例详解
2021-02-26 20:53:45对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用对整数列表排序(升序)List list = Arrays....这篇文章主要介绍了Java8 Comparator排序方法实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
Java8 中 Comparator 接口提供了一些静态方法,可以方便于我们进行排序操作,下面通过例子讲解下如何使用
对整数列表排序(升序)
List list = Arrays.asList(1,4,2,6,8);
list.sort(Comparator.naturalOrder());
System.out.println(list);
对整数列表排序(降序)
List list = Arrays.asList(1,8);
list.sort(Comparator.reverSEOrder());
System.out.println(list);
根据对象属性(年龄)进行排序
public class Test {
public static void main(String[] args) {
List personList = new ArrayList<>();
personList.add(new Person("a",2));
personList.add(new Person("b",4));
personList.add(new Person("c",7));
// 升序
personList.sort(Comparator.comparingInt(Person::getAge));
// 降序
personList.sort(Comparator.comparingInt(Person::getAge).reversed());
System.out.println(personList);
}
public static class Person {
private String name;
private Integer age;
public Person(String name,Integer age) {
this.name = name;
this.age = age;
}
public Integer getAge() {
return age;
}
// ... toString 方法
}
}
根据对象属性(价格、速度)进行排序,需要注意的是,排序有先后之分,不同的顺序会导致不同的结果
public class Test {
public static void main(String[] args) {
List list = new ArrayList<>();
list.add(new Computer("xiaomi",4000,6));
list.add(new Computer("sony",5000,4));
list.add(new Computer("dell",5));
list.add(new Computer("mac",6000,8));
list.add(new Computer("micro",6));
// 先以价格(升序)、后再速度(升序)
list.sort(Comparator.comparingInt(Computer::getPrice).thenComparingInt(Computer::getSpeed));
// 先以速度(降序)、后再价格(升序)
list.sort(Comparator.comparingInt(Computer::getSpeed).reversed().thenComparingInt(Computer::getPrice));
// 先以价格(降序)、后再速度(降序)
list.sort(Comparator.comparingInt(Computer::getPrice).thenComparingInt(Computer::getSpeed).reversed());
System.out.println(list);
}
public static class Computer {
private String name;
private Integer price;
private Integer speed;
public Computer(String name,Integer price,Integer speed) {
this.name = name;
this.price = price;
this.speed = speed;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getSpeed() {
return speed;
}
public void setSpeed(Integer speed) {
this.speed = speed;
}
// ... toString 方法
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250
-
java 自定义排序【Comparator升序降序的记法】
2017-12-25 18:57:26环境java: 1.7需求今天在写排序时,忘了是返回1,是正序,还是-1为正序。 或者说,正序或者降序我应该如何返回。例子说明Collections.sort(companyList, new Comparator() { @Override public int compare... -
java 对list 排序_Java List 排序的2种方法
2021-02-12 12:34:57利用Collections类的 java.util.Collections.sort(java.util.List, java.util.Comparator) 方法,自定义比较器对象对指定对象进行排序对学生对象按照其 分数(降序)进行排序,当分数相同时按学号(从小到大)排序,代码... -
java8 list.sort 排序
2020-09-10 11:17:46// 按照List中对象的id属性降序 list.sort(Comparator.comparing(User::getId).reversed()); // 多个条件升序 list.sort(Comparator.comparing(User::getId).thenComparing(User::getDeId)); // id升序,... -
Java List的sort()方法通过改写compare()实现升序、降序、倒序
2020-01-08 16:55:01本文旨在通过重写Comparator接口的compare()方法实现对List的升序、降序、倒序排序。 首先明确一点: compare(Integer o1, Integer o2){}中,o1代表的是List容器中的后一个元素,o2代表的是List容器中的前一个元素... -
java8List.sort()排序功能
2019-08-29 10:54:35//按照List中对象的id属性升序 ...//按照List中对象的id属性降序 list.sort(Comparator.comparing(Stu::getId).reversed()); //多条件升序 list.sort(Comparator.comparing(Stu::getId).thenCompari... -
java 8 list排序
2020-04-19 23:40:36现在使用到的排序是降序排序 Collections.sort(companyList, (a, b) -> b.getCreateTime().compareTo(a.getCreateTime())); 参考链接 https://blog.csdn.net/duyusean/article/details/81638333 ... -
java 8 根据对象的某个字段排序(升序,降序)
2020-05-28 15:25:52//根据Dict对象的sort字段降序排序 dictList.sort(Comparator.comparing(Dict::getSort).reversed()); //根据Dict对象的sort字段升序排序 dictList.sort(Comparator.comparing(Dict::getSort)); -
java随机去重_JAVA 集合 升序|降序|随机|去重排序
2021-02-26 19:11:02使用Collections工具类进行排序Collections支付三种排序A.sort()默认排序(从小到大)B.reverse()倒序(从大到小)C.shuffle()随机排序List排序大体上分为如下两类:1、List 对Integer、String等类型的List排序2、List ... -
JAVA 集合 升序|降序|随机|去重排序
2018-04-28 14:03:10一、说明 List排序规则可分为如下: 1.自定义排序 2.使用Collections工具类进行排序 Collections支付三种排序 ...A.sort()默认排序(从小到大) ...1、List 对Integer、String等类型的List排序 2、Li -
Java HashMap按key排序和按value排序的两种简便方法(double降序问题)
2020-07-11 18:00:59上面转载的文章是没谈到double的降序问题 重写之后,只有compareto 支持double类型的比较 默认是升序 List<Map.Entry<Accommodation, Double>> list = new ArrayList<Map.Entry<Accommodation, ... -
java-Conllections.sort排序list
2018-09-18 11:31:10功能:list中的元素为Person类型,需要根据list中的age属性升序排列,如果age属性的值相同则保持list原有的顺序 如果需要降序,修改demo2中return的代码 为如下代码即可 return o2.getAge() - o1.getAge();... -
Java List排序 (包括对象List排序)
2016-11-22 23:38:34常见数据类型List直接把需要排序的list当做参数调用下列方法即可Collections.sort(list);//升序排列 Collections.sort(list,Collections.reverseOrder());//降序排列对象List举例:Student.java(一个简单的实体类)... -
JAVA对list集合进行排序Collections.sort()
2019-09-27 06:46:26对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序。代码如下: // 进行降序排列 Collections.sort(list, new Comparator<ResultTypeDesc>() { public int compare... -
java一段数字 分割的升序降序 奇偶数分开排序
2017-04-26 22:09:00/** * 降序升序 * * @param str * @since 0.0.1 */ public void sort(String str){ String[] nums = str.split(" "); List<Integer> odd = new Ar... -
Java List排序
2013-10-17 13:38:23实现:利用Collections类的 sort(List list,Comparator c) 方法,自定义比较器对象对指定对象进行排序 代码实现 Student类 class Student{ private int id; private String name; privat -
求个java list排序的问题
2015-08-28 05:57:09一个list中存放了Student对象n个 现对list中的Student对象进行排序 要求:班级升序,如果班级相同 按照学号降序排列 ! 我现在用Collections.sort实现了,在测试中没有问题 但是,在实际的插入数据排序的时候 开始... -
JAVA对list集合进行排序Collections.sort(),对集合按照某个字段排序
2019-09-11 09:58:54本文转载地址:... 对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序。代码如下: // 进行降序排列 Collections.sort(list, new Comparator<ResultTypeDesc>() { ...
-
自动化测试Python3+Selenium3+Unittest
-
java 将网页注册框提取到客户端_如何将从客户端获取的实时信息显示到页面上?...
-
删除图片缓存文件.bat
-
strace 跟踪进程中的系统调用
-
Liunx 优化思路与实操步骤
-
【ssm项目源码】校园活动信息平台.zip
-
wgcloud-v3.3.0操作说明手册
-
家庭收支明细记录表.7z
-
深究字符编码的奥秘,与乱码说再见
-
MySQL 四类管理日志(详解及高阶配置)
-
PROGRAM GUIDE_MIXER PROCESSOR_G2D驱动使用手册.pdf
-
财务小管家 - 2019.7z
-
朱老师C++课程第3部分-3.6智能指针与STL查漏补缺
-
让数据说话――数据分析方法(1).ppt
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
jQuery高级
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
第九十七题
-
蓝桥杯算法比赛历届试题
-
swagger-api嵌入项目测试接口