Java List的sort()方法改写compare()实现升序,降序,倒序的案例
作者:pc_ 发布时间:2021-12-30 06:22:58
标签:Java,List,sort,compare,升序,降序,倒序
本文旨在通过重写Comparator接口的compare()方法实现对List的升序、降序、倒序排序。
首先明确一点:
compare(Integer o1, Integer o2){}中,o1代表的是List容器中的后一个元素,o2代表的是List容器中的前一个元素!
通过以下例子可以清晰了解这一点:
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
System.out.println(o1 + "," + o2);//输出o1,o2
return 0;
}
});
}
输出为:
2,1
3,2
升序
代码:
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1>o2)
return 1;//第二个元素(o1)比第一个元素(o2)大,返回1
if(o1==o2)
return 0;
return -1;
}//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换
});
System.out.println(list.toString());
}
输出:
[1,2,3]
降序
代码:
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
if(o1>o2)
return -1;//第二个元素(o1)比第一个元素(o2)大,返回-1
if(o1==o2)
return 0;
return 1;
}//1,0,-1三者同时出现时,1表示不交换位置,0表示相等时不交换,-1表示交换
});
System.out.println(list.toString());
输出:
[3,2,1]
倒序
代码:
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);
list.sort(new Comparator<Integer>() {
public int compare(Integer o1, Integer o2) {
return -1;
}//倒序就直接返回-1
});
System.out.println(list.toString());
}
输出:
[3,2,1]
补充:Java中对List集合内的元素进行顺序、倒序、随机排序的示例代码
我就废话不多说了,大家还是直接看代码吧~
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
public class Test {
List list = new LinkedList();
public static void main(String[] args) {
List list = new LinkedList();
for ( int i = 0 ; i < 9 ; i ++ ) {
list.add( " a " + i);
}
Collections.sort(list); // 顺序排列
System.out.println(list);
Collections.shuffle(list); // 混乱的意思
System.out.println(list);
Collections.reverse(list); // 倒序排列
System.out.println(list);
System.out.println(Collections.binarySearch(list, " a5 " )); // 折半查找
}
}
补充:java8根据两个字段排序(一正序一倒叙)
List<Student> collect2 = list.stream()
.sorted(Comparator.comparing(Student::getAge).reversed().thenComparing(Student::getScore))
.collect(Collectors.toList());
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。
来源:https://blog.csdn.net/mengzhongdaima/article/details/103893567


猜你喜欢
- 不小心将.idea文件提交后无法删除1、同步git最新代码,将.idea文件同步下来如果同步不下来,看看是不是在同步的时候与本地文件产生了冲
- 微信的图片下拽返回功能在日常使用中非常方便,同时在很多 App 中都见到了类似的设计,可以说一旦习惯这种操作再也回不去了。这几天逛 GitH
- 一、简介1、DES 简介DES 全称为 Data Encryption Standard,即数据加密标准,是一种使用密钥加密的块算法,197
- 本文实例讲述了Struts2+Hibernate实现数据分页的方法。分享给大家供大家参考,具体如下:1.用Hibernate实现分页技术:/
- 我们通常在使用Java 调用脚本的时候,会使用 Runtime 类如:// 打开浏览器并访问 http://localh
- Android里判断是否可以上网,常用的是如下方法:/** * 检测网络是否连接 * * @return */private boolea
- 在Spring MVC中经常要用到 * ,在配置需要要拦截的路径时经常用到<mvc:mapping/>子标签,其有一个path属
- 静态数组Java中最基本的数组大家肯定不会陌生:int[] array = new int[6];for (int i = 0; i <
- 本问介绍了Collections工具类两种sort()方法,具体如下:一、Collections工具类两种sort()方法格式一: publ
- 前言最近项目targetSdkVersion升级到了26,出现很多问题趟了很多坑,其中就包括本篇的需要解决的问题:全局dialog 不显示。
- 短信是手机常见的功能,本文就以实例形式讲述了Android实现将已发送的短信写入短信数据库的方法。分享给大家供大家参考之用。具体如下:一般来
- 回顾Tomcat8打法先回顾下之前Tomcat789的打法这里先抛开 7 8之间的区别, 在8中,最后add到filterchain的都是一
- 前言前一段时间做了一个项目,需要解决中文、繁体、英文的国际化问题,所以本文将详细介绍springboot页面国际化配置的过程方法如下1.引入
- **********************************************************************
- 基本语法C#,又名Csharp,天朝喜欢叫C井。C#是一种面向对象的编程语言。在面向对象的程序设计方法中,程序有各种相互交互的对象组成。相同
- Java8被称作Java史上变化最大的一个版本。其中包含很多重要的新特性,最核心的就是增加了Lambda表达式和StreamAPI。这两者也
- 汉诺塔的规则是:一共三根柱子,一根柱子从上到
- Java 线程池原理Executor框架的两级调度模型在HotSpot VM的模型中,Java线程被一对一映射为本地操作系统线程。JAVA线
- 概念 在 HTML 中,<a>, <form>, <img>, <script>,
- 本文实例介绍了sdcard存储图片下载简单操作,分享给大家供大家参考,具体内容如下步骤 -- 在配置清单添加完联网权限后1、res/layo