最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中Comparator與Comparable排序的區(qū)別詳解

 更新時間:2024年01月17日 11:24:22   作者:霸道流氓氣質(zhì)  
這篇文章主要介紹了Java中Comparator與Comparable排序的區(qū)別詳解,如果你有一個類,希望支持同類型的自定義比較策略,可以實現(xiàn)接口Comparable,如果某個類,沒有實現(xiàn)Comparable,但是又希望對它進行比較,則可以自定義一個Comparator,需要的朋友可以參考下

場景

java中進行排序比較時Comparator與Comparable區(qū)別:

如果你有一個類,希望支持同類型的自定義比較策略,可以實現(xiàn)接口Comparable

如果某個類,沒有實現(xiàn)Comparable,但是又希望對它進行比較,則可以自定義一個Comparator,來定義這個類的比較規(guī)則

使用Comparable進行排序比較

新建類CompareDemo,并添加code和age屬性,該類實現(xiàn)Comparable接口

并重新compareTo方法

public class CompareDemo implements Comparable<CompareDemo>{
    int code;
    int age;
    public CompareDemo(int code, int age) {
        this.code = code;
        this.age = age;
    }
    @Override
    public int compareTo(CompareDemo o) {
        if(code == o.code){
            return 0;
        }else if(code<o.code){
            return -1;
        }else{
            return 0;
        }
    }
}

進行排序比較,默認根據(jù)code進行升序比較

List<CompareDemo> list = new ArrayList<CompareDemo>(){{
    add(new CompareDemo(10,20));
    add(new CompareDemo(12,30));
    add(new CompareDemo(11,10));
}};
list.forEach(compareDemo -> System.out.println(compareDemo.code));
//默認根據(jù)code進行升序比較
list.sort(null);
list.forEach(compareDemo -> System.out.println(compareDemo.code));

如果現(xiàn)在需求變了,希望針對age字段,進行升序排序,那么就可以利用Comparator實現(xiàn)。

使用Comparator進行排序

list.sort(new Comparator<CompareDemo>() {
    @Override
    public int compare(CompareDemo o1, CompareDemo o2) {
        if (o1.age == o2.age) {
            return 0;
        } else if (o1.age < o2.age) {
            return -1;
        } else {
            return 1;
        }
    }
});
list.forEach(compareDemo -> System.out.println(compareDemo.age));

上面的排序可以簡化為

list.sort(new Comparator<CompareDemo>() {
    @Override
    public int compare(CompareDemo o1, CompareDemo o2) {
        return Integer.compare(o1.age,o2.age);
    }
});

在JDK1.8中還可以更簡化

list.sort(Comparator.comparingInt(o -> o.age));

如果希望倒序

list.sort(new Comparator<CompareDemo>() {
    @Override
    public int compare(CompareDemo o1, CompareDemo o2) {
        return Integer.compare(o2.age,o1.age);
    }
});

在jdk1.8中,使用負數(shù)

list.sort(Comparator.comparingInt(o->-o.age));
list.forEach(compareDemo -> System.out.println(compareDemo.age));

到此這篇關(guān)于Java中Comparator與Comparable排序的區(qū)別詳解的文章就介紹到這了,更多相關(guān)Comparator與Comparable區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot 自定義校驗代碼實例

    Springboot 自定義校驗代碼實例

    這篇文章主要介紹了Springboot 自定義校驗代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11
  • Java設(shè)計模式中的策略模式詳細解析

    Java設(shè)計模式中的策略模式詳細解析

    這篇文章主要介紹了Java設(shè)計模式中的策略模式詳細解析,所謂策略模式,指的是做某一件事時有多種選擇(即策略),且不同的策略之間相互獨立,而且無論使用哪種策略,得到的結(jié)果都是相同的,需要的朋友可以參考下
    2023-12-12
  • java字符轉(zhuǎn)碼的三種方法總結(jié)及實例

    java字符轉(zhuǎn)碼的三種方法總結(jié)及實例

    這篇文章主要介紹了 java字符轉(zhuǎn)碼的三種方法總結(jié)及實例的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • JAVA實現(xiàn)漢字轉(zhuǎn)拼音功能代碼實例

    JAVA實現(xiàn)漢字轉(zhuǎn)拼音功能代碼實例

    這篇文章主要介紹了JAVA實現(xiàn)漢字轉(zhuǎn)拼音功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-05-05
  • Java泛化調(diào)用實現(xiàn)原理解析

    Java泛化調(diào)用實現(xiàn)原理解析

    泛化調(diào)用指的是不依賴服務(wù)接口的本地?stub?或代理類,通過統(tǒng)一的參數(shù)結(jié)構(gòu)動態(tài)調(diào)用遠程服務(wù)方法,本文介紹Java泛化調(diào)用實現(xiàn)原理解析,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java實現(xiàn)二分法變種的示例代碼

    Java實現(xiàn)二分法變種的示例代碼

    這篇文章主要為大家介紹了Java實現(xiàn)二分法變種的示例代碼復(fù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • spring @Scheduled注解的使用誤區(qū)及解決

    spring @Scheduled注解的使用誤區(qū)及解決

    這篇文章主要介紹了spring @Scheduled注解的使用誤區(qū)及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Springboot中的Shiro基礎(chǔ)入門教程

    Springboot中的Shiro基礎(chǔ)入門教程

    Apache Shiro是一個強大且靈活的開源安全框架,適用于Java應(yīng)用程序,它提供了認證、授權(quán)、會話管理和加密等功能,通過Shiro,開發(fā)者可以輕松地實現(xiàn)用戶身份驗證和權(quán)限控制,從而保護應(yīng)用程序的安全,本文介紹Springboot中的Shiro基礎(chǔ)入門教程,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • 利用ScriptEngineManager實現(xiàn)字符串公式靈活計算的方法

    利用ScriptEngineManager實現(xiàn)字符串公式靈活計算的方法

    今天小編就為大家分享一篇利用ScriptEngineManager實現(xiàn)字符串公式靈活計算的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁面

    詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁面

    本篇文章主要介紹了springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁面,session一旦失效就需要重新登陸,有興趣的同學(xué)可以了解一下。
    2017-01-01

最新評論

瑞昌市| 建昌县| 深圳市| 九江市| 沂水县| 凤庆县| 偃师市| 巫山县| 河北省| 翼城县| 余江县| 靖边县| 平谷区| 隆林| 景德镇市| 驻马店市| 织金县| 沁水县| 海城市| 屏东县| 南木林县| 厦门市| 和静县| 呼图壁县| 读书| 汶川县| 普格县| 福清市| 卢湾区| 舟曲县| 绥阳县| 平遥县| 日土县| 自贡市| 鄱阳县| 南和县| 海口市| 宁安市| 布尔津县| 徐汇区| 洛宁县|