Java List的sort()方法改写compare()实现升序,降序,倒序的案例

 更新时间:2021年03月02日 10:56:18   作者:pc_  
这篇文章主要介绍了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());

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。如有错误或未考虑完全的地方,望不吝赐教。

相关文章

  • 简单谈谈Java中的方法和方法重载

    简单谈谈Java中的方法和方法重载

    下面小编就为大家带来一篇简单谈谈Java中的方法和方法重载。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • SpringBoot上传图片到指定位置并返回URL的实现

    SpringBoot上传图片到指定位置并返回URL的实现

    本文主要介绍了SpringBoot上传图片到指定位置并返回URL,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下<BR>
    2022-03-03
  • 简单易懂讲解happens-before原则

    简单易懂讲解happens-before原则

    Java内存模型中的happens-before是什么?为什么会有这东西的存在?一个新东西肯定是上手先,但是等我们空下来回过头来,我们还是需要去理解这些知识,只有这样我才能深刻的记住,并且运用熟练。下来和小编来一起学习下
    2019-05-05
  • javaweb图书商城设计之用户模块(1)

    javaweb图书商城设计之用户模块(1)

    这篇文章主要介绍了javaweb图书商城设计之用户模块的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • java数据类型与变量的安全性介绍

    java数据类型与变量的安全性介绍

    这篇文章主要介绍了java数据类型与变量的安全性介绍,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的朋友可以参考一下
    2022-07-07
  • spring boot使用logback日志级别打印控制操作

    spring boot使用logback日志级别打印控制操作

    这篇文章主要介绍了spring boot使用logback日志级别打印控制操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 解决SSLContext.getInstance()中参数设置TLS版本无效的问题

    解决SSLContext.getInstance()中参数设置TLS版本无效的问题

    这篇文章主要介绍了解决SSLContext.getInstance()中参数设置TLS版本无效的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 更改eclipse的JDK版本详细步骤

    更改eclipse的JDK版本详细步骤

    我们用eclipse在做项目的时候会切换jdk版本,本地运行的项目所使用的jdk版本比Linux服务器高(低),需要调低(高)JDK版本,这篇文章主要给大家介绍了关于如何更改eclipse的JDK版本的相关资料,需要的朋友可以参考下
    2023-11-11
  • Java 把json对象转成map键值对的方法

    Java 把json对象转成map键值对的方法

    这篇文章主要介绍了java 把json对象中转成map键值对的方法,本文的目的是把json串转成map键值对存储,而且只存储叶节点的数据 。需要的朋友可以参考下
    2018-04-04
  • java反射常用方法案例详解

    java反射常用方法案例详解

    Java反射指的是一个机制,这种机制可以在Java程序运行时(动态)实例化对象、读写属性、调用方法,这篇文章主要介绍了java反射常用方法,需要的朋友可以参考下
    2023-06-06

最新评论