欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2023年06月09日 15:19:21   作者:xiaopangcame  
本文主要介紹了Java中Comparator升序降序的具體使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

在使用Java自帶的排序函數(shù)時,往往需要根據(jù)自己的需求自定義比較器。以前一直對Comparator的升序降序疑惑。現(xiàn)在記錄一下,加深下印象。

先給結(jié)論:

實現(xiàn)Comparator接口,必須實現(xiàn)下面這個函數(shù):

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

這里o1表示位于前面的對象,o2表示后面的對象

  • 返回-1(或負數(shù)),表示不需要交換01和02的位置,o1排在o2前面,asc
  • 返回1(或正數(shù)),表示需要交換01和02的位置,o1排在o2后面,desc

舉例說明:(分析說明在運行結(jié)果之后)

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);
    }
}

輸出結(jié)果:

下面來用我們之前的結(jié)論解釋為什么return o2.a - o1.a;就是降序了:

首先o2是第二個元素,o1是第一個元素。無非就以下這些情況:

①: o2.a > o1.a : 那么此時返回正數(shù),表示需要調(diào)整o1,o2的順序,也就是需要把o2放到o1前面,這不就是降序了么。

②:o2.a < o1.a : 那么此時返回負數(shù),表示不需要調(diào)整,也就是此時o1 比 o2大, 不還是降序么。

到此這篇關(guān)于Java中Comparator升序降序的具體使用的文章就介紹到這了,更多相關(guān)Java Comparator升序降序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用

    java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用

    這篇文章主要為大家介紹了java開發(fā)ServiceLoader實現(xiàn)機制及SPI應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • Java關(guān)鍵字詳解之final static this super的用法

    Java關(guān)鍵字詳解之final static this super的用法

    this用來調(diào)用目前類自身的成員變量,super多用來調(diào)用父類的成員,final多用來定義常量用的,static定義靜態(tài)變量方法用的,靜態(tài)變量方法只能被類本身調(diào)用,下文將詳細介紹,需要的朋友可以參考下
    2021-10-10
  • MyBatis Plus復(fù)合主鍵問題的解決

    MyBatis Plus復(fù)合主鍵問題的解決

    在數(shù)據(jù)庫設(shè)計中,有時候需要使用復(fù)合主鍵來唯一標識表中的一行數(shù)據(jù),本文將為您詳細介紹MyBatis Plus中復(fù)合主鍵的問題以及解決方案,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Java socket 如何獲取gps定位

    Java socket 如何獲取gps定位

    在Java中使用Socket來直接獲取GPS定位信息并不直接可行,因為GPS數(shù)據(jù)通常不是通過Socket通信來獲取的,本文給大家介紹Java socket 獲取gps定位的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • Java使用同步方法解決銀行取錢的安全問題案例分析

    Java使用同步方法解決銀行取錢的安全問題案例分析

    這篇文章主要介紹了Java使用同步方法解決銀行取錢的安全問題,結(jié)合具體案例形式分析了java同步方法實現(xiàn)多線程安全操作銀行取錢問題,需要的朋友可以參考下
    2019-09-09
  • Java中Map的排序問題詳解

    Java中Map的排序問題詳解

    本文給大家分享的是java中的map的按值排序和按鍵排序問題,并通過具體的示例,希望對大家能有所幫助。
    2016-01-01
  • Java基礎(chǔ)入門 Swing中間容器的使用

    Java基礎(chǔ)入門 Swing中間容器的使用

    這篇文章主要介紹了Java基礎(chǔ)入門 Swing中間容器的使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot實現(xiàn)密碼安全存儲的五種方式小結(jié)

    SpringBoot實現(xiàn)密碼安全存儲的五種方式小結(jié)

    項目開發(fā)中,密碼安全存儲是非常關(guān)鍵的一環(huán),作為開發(fā)者,我們需要確保用戶的密碼在存儲時被安全地加密,避免因數(shù)據(jù)泄露而造成嚴重后果,所以本文給大家介紹了SpringBoot實現(xiàn)密碼安全存儲的5種方式,需要的朋友可以參考下
    2025-03-03
  • Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式

    Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式

    這篇文章主要介紹了Mybatis-plus配置多數(shù)據(jù)源,連接多數(shù)據(jù)庫方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • SpringBoot錯誤提示400狀態(tài)問題

    SpringBoot錯誤提示400狀態(tài)問題

    這篇文章主要介紹了SpringBoot錯誤提示400狀態(tài)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論