Java中Comparator升序降序的具体使用

 更新时间:2023年06月09日 15:19:21   作者:xiaopangcame  
本文主要介绍了Java中Comparator升序降序的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在使用Java自带的排序函数时,往往需要根据自己的需求自定义比较器。以前一直对Comparator的升序降序疑惑。现在记录一下,加深下印象。

先给结论:

实现Comparator接口,必须实现下面这个函数:

@Override
public int compare(CommentVo o1, CommentVo o2) {
           return o1.getTime().compareTo(o2.getTime());
}

这里o1表示位于前面的对象,o2表示后面的对象

  • 返回-1(或负数),表示不需要交换01和02的位置,o1排在o2前面,asc
  • 返回1(或正数),表示需要交换01和02的位置,o1排在o2后面,desc

举例说明:(分析说明在运行结果之后)

package com.zhb.test;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class A {
    int a;
    public A(int a) {
        this.a = a;
    }
    @Override
    public String toString() {
        return "[a=" + a + "]";
    }
}
class MyComparator implements Comparator<A> {
    @Override
    public int compare(A o1, A o2) {
        //升序
        //return o1.a - o2.a;
        //降序:后面会具体分析为什么降序
        return o2.a - o1.a;
    }
}
public class ComparatorTest {
    public static void main(String[] args) {
        A a1 = new A(5);
        A a2 = new A(7);
        List<A> list = new ArrayList<A>();
        list.add(a1);
        list.add(a2);
        Collections.sort(list, new MyComparator());
        System.out.println(list);
    }
}

输出结果:

下面来用我们之前的结论解释为什么return o2.a - o1.a;就是降序了:

首先o2是第二个元素,o1是第一个元素。无非就以下这些情况:

①: o2.a > o1.a : 那么此时返回正数,表示需要调整o1,o2的顺序,也就是需要把o2放到o1前面,这不就是降序了么。

②:o2.a < o1.a : 那么此时返回负数,表示不需要调整,也就是此时o1 比 o2大, 不还是降序么。

到此这篇关于Java中Comparator升序降序的具体使用的文章就介绍到这了,更多相关Java Comparator升序降序内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mybatis教程之动态sql语句_动力节点Java学院整理

    mybatis教程之动态sql语句_动力节点Java学院整理

    这篇文章主要介绍了mybatis教程之动态sql语句,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Springboot手动连接库并获取指定表结构的示例代码

    Springboot手动连接库并获取指定表结构的示例代码

    这篇文章主要介绍了Springboot手动连接库并获取指定表结构的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • 解决Java中的强制类型转换和二进制表示问题

    解决Java中的强制类型转换和二进制表示问题

    这篇文章主要介绍了解决Java中的强制类型转换和二进制表示问题,需要的朋友可以参考下
    2019-05-05
  • Java实现求小于n的质数的3种方法

    Java实现求小于n的质数的3种方法

    这篇文章主要介绍了Java实现求小于n的质数的3种方法,本文给出了根据定义去求解、平方根、找规律三种解法,需要的朋友可以参考下
    2015-03-03
  • Java SM2加密相关实现与简单原理详解

    Java SM2加密相关实现与简单原理详解

    SM2算法可以用较少的计算能力提供比RSA算法更高的安全强度,而所需的密钥长度却远比RSA算法低,这篇文章主要给大家介绍了关于Java SM2加密相关实现与简单原理的相关资料,需要的朋友可以参考下
    2024-01-01
  • MAVEN3.9.x中301问题及解决方法

    MAVEN3.9.x中301问题及解决方法

    本文主要介绍了使用MAVEN3.9.x中301问题及解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • deepseek本地部署及java、python调用步骤详解

    deepseek本地部署及java、python调用步骤详解

    这篇文章主要介绍了如何下载和使用Ollama模型,包括安装JDK 17及以上版本和Spring Boot 3.3.6,配置pom文件和application.yml,创建Controller,以及使用Python调用模型,需要的朋友可以参考下
    2025-02-02
  • Java实现简单控制台版ATM系统

    Java实现简单控制台版ATM系统

    这篇文章主要为大家详细介绍了Java实现简单控制台版ATM系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 基于SpringBoot的SSMP的整合案例

    基于SpringBoot的SSMP的整合案例

    这篇文章主要介绍了SpringBoot整合SSMP的详细教程,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • Mybatis Update操作返回值问题

    Mybatis Update操作返回值问题

    在获取update操作的返回值时遇到了一个问题,似乎 Mybatis 进行 update 操作得到的 int 返回值并不是影响的行数,下面通过本文给大家分享Mybatis Update操作返回值问题,需要的朋友参考下吧
    2017-09-09

最新评论