国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【java常用接口】Comparator學(xué)習(xí)

這篇具有很好參考價(jià)值的文章主要介紹了【java常用接口】Comparator學(xué)習(xí)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


Comparator 是 Java 中的一個(gè)接口,用于定義對(duì)象之間的排序規(guī)則。它可以用于對(duì)集合中的對(duì)象進(jìn)行排序,或者用于自定義排序算法。

1. 常見(jiàn)的應(yīng)用場(chǎng)景

  • 對(duì)集合中的對(duì)象進(jìn)行排序。
  • 自定義排序算法。
  • 結(jié)合 Stream流 實(shí)現(xiàn)更便捷的排序操作。

2. 基本使用

  • 實(shí)現(xiàn) Comparator 接口:創(chuàng)建一個(gè)類(lèi),實(shí)現(xiàn) Comparator 接口,并重寫(xiě)其 compare 方法。在 compare 方法中定義排序規(guī)則。
  • 匿名內(nèi)部類(lèi):使用匿名內(nèi)部類(lèi)的方式創(chuàng)建 Comparator 對(duì)象,并在其中實(shí)現(xiàn) compare 方法。
  • Lambda 表達(dá)式:使用 Lambda 表達(dá)式簡(jiǎn)化 Comparator 的創(chuàng)建。

3. 常見(jiàn)用法

  • 使用 Comparator.comparing 方法:Comparator 提供了 comparing 方法,可以根據(jù)對(duì)象的某個(gè)屬性進(jìn)行比較。
  • 使用 Comparator.comparingInt、comparingLong、comparingDouble 方法:對(duì)于基本類(lèi)型的屬性,可以使用相應(yīng)的方法進(jìn)行比較。

4. 高級(jí)用法

  • 逆序排序:通過(guò)調(diào)用 Comparator 的 reversed 方法可以實(shí)現(xiàn)逆序排序。
  • 多級(jí)排序:可以通過(guò)鏈?zhǔn)秸{(diào)用多個(gè) Comparator 對(duì)象來(lái)實(shí)現(xiàn)多級(jí)排序。
  • 自定義比較邏輯:在 compare 方法中可以根據(jù)自己的需求定義排序邏輯。

5. 示例代碼及解析

public class Student {
    private String name;
    private int score;

    public Student(String name, int score) {
        this.name = name;
        this.score = score;
    }

    public String getName() {
        return name;
    }

    public int getScore() {
        return score;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", score=" + score +
                '}';
    }
}

public class ComparatorExample {
    public static void main(String[] args) {
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", 90));
        students.add(new Student("Bob", 80));
        students.add(new Student("Charlie", 95));

        // 按照分?jǐn)?shù)升序排序
        // 使用匿名內(nèi)部類(lèi)實(shí)現(xiàn) Comparator 接口
        /*students.sort(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                return o1.getScore()>o2.getScore() ? 1 : -1;
            }
        });*/
        // 使用 Lambda 表達(dá)式實(shí)現(xiàn) Comparator 接口
        students.sort(Comparator.comparing(student -> student.getScore()));
        System.out.println("按照分?jǐn)?shù)升序排序: " + students);

        // 按照分?jǐn)?shù)降序排序
        students.sort(Comparator
                .comparing((Student student) -> student.getScore())
                .reversed());
        System.out.println("按照分?jǐn)?shù)降序排序: " + students);

        // 按照分?jǐn)?shù)降序排序,分?jǐn)?shù)相同則按照姓名升序排序
        students.sort(Comparator
                .comparing((Student student) -> student.getScore())
                .reversed()
                .thenComparing(student1 -> student1.getName()));
        System.out.println("按照分?jǐn)?shù)降序、姓名升序排序: " + students);

        // 自定義排序邏輯,按照字符串長(zhǎng)度排序
        List<String> strings = new ArrayList<>();
        strings.add("abc");
        strings.add("defg");
        strings.add("hijkl");

        strings.sort(Comparator.comparing(s -> s.length()));
        System.out.println("按照字符串長(zhǎng)度排序: " + strings);
    }
}

文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-809827.html

到了這里,關(guān)于【java常用接口】Comparator學(xué)習(xí)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 可能是最簡(jiǎn)單最通透的Comparable和Comparator接口返回值理解

    先說(shuō) Comparator 接口,這個(gè)理解了,下一個(gè)就理解了 返回-1,1交換不交換位置,如果撇開(kāi)比較器的兩個(gè)參數(shù)和jdk默認(rèn)順序來(lái)說(shuō),存粹是錯(cuò)誤的 接口如下:原文鏈接 現(xiàn)提出如下標(biāo)準(zhǔn): 標(biāo)準(zhǔn)1:jdk 默認(rèn)要升序排列,即程序排序規(guī)則是 asc ,升序排列 標(biāo)準(zhǔn)2: Comparator 接口第一個(gè)參數(shù)

    2024年02月08日
    瀏覽(36)
  • JAVA語(yǔ)言-比較器Comparator

    JAVA語(yǔ)言-比較器Comparator

    目錄 一、什么是Comparator 二、Java compare方法和compareTo方法 三、java中Comparable和Comparator的區(qū)別 Comparator的例子 Comparator 是javase中的接口,位于java.util包下。 數(shù)組工具類(lèi)和集合工具類(lèi)中提供的工具方法sort方法都給出了含有Comparator接口的重載方法。 List實(shí)例調(diào)sort方法 demo如下: 使

    2024年02月06日
    瀏覽(20)
  • Java中的比較器(Comparator)

    Java中的比較器(Comparator)是一種對(duì)象,用于定義兩個(gè)對(duì)象之間的比較規(guī)則。它是一個(gè)獨(dú)立的類(lèi),實(shí)現(xiàn)了Comparator接口,通常用于對(duì)集合中的元素進(jìn)行排序。Comparator接口中有一個(gè)compare()方法,它接受兩個(gè)對(duì)象作為參數(shù),并返回一個(gè)int值,表示它們的順序。 下面是一個(gè)簡(jiǎn)單的例

    2024年02月11日
    瀏覽(17)
  • Java線上故障排查(CPU、磁盤(pán)、內(nèi)存、網(wǎng)絡(luò)、GC)+JVM性能調(diào)優(yōu)監(jiān)控工具+JVM常用參數(shù)和命令

    Java線上故障排查(CPU、磁盤(pán)、內(nèi)存、網(wǎng)絡(luò)、GC)+JVM性能調(diào)優(yōu)監(jiān)控工具+JVM常用參數(shù)和命令

    根據(jù)服務(wù)部署和項(xiàng)目架構(gòu),從如下幾個(gè)方面排查: (1)運(yùn)用服務(wù)器:排查內(nèi)存,cpu,請(qǐng)求數(shù)等; (2)文件圖片服務(wù)器:排查內(nèi)存,cpu,請(qǐng)求數(shù)等; (3)計(jì)時(shí)器服務(wù)器:排查內(nèi)存,cpu,請(qǐng)求數(shù)等; (4)redis服務(wù)器:排查內(nèi)存,cpu,連接數(shù)等; (5)db服務(wù)器:排查內(nèi)存,cpu,連接數(shù)

    2024年02月07日
    瀏覽(30)
  • Java入門(mén)8(Comparator比較器,HashMap)

    ?Comparator不同于Comparable,使用更加的靈活,可以在不同場(chǎng)景下使用比較器,實(shí)際開(kāi)發(fā)中,更推薦comparator比較器 Set接口常用實(shí)現(xiàn)類(lèi) 三個(gè)常用實(shí)現(xiàn)類(lèi):TreeSet(基于Java紅黑樹(shù),底層map),HashSet(哈希表,底層map),LinkedHashSet() Set特點(diǎn): 不允許存儲(chǔ)重復(fù)元素 沒(méi)有索引,不能

    2024年02月04日
    瀏覽(22)
  • java自然排序Comparable和比較器排序Comparator

    案例需求 存儲(chǔ)學(xué)生對(duì)象并遍歷,創(chuàng)建TreeSet集合使用無(wú)參構(gòu)造方法 要求:按照年齡從小到大排序,年齡相同時(shí),按照姓名的字母順序排序 實(shí)現(xiàn)步驟 使用空參構(gòu)造創(chuàng)建TreeSet集合 用TreeSet集合存儲(chǔ)自定義對(duì)象,無(wú)參構(gòu)造方法使用的是自然排序?qū)υ剡M(jìn)行排序的 自定義的Student類(lèi)實(shí)

    2024年02月07日
    瀏覽(18)
  • ARM學(xué)習(xí)(23)AMP和SMP的認(rèn)識(shí)與理解

    ARM學(xué)習(xí)(23)AMP和SMP的認(rèn)識(shí)與理解

    筆者來(lái)聊聊AMP和SMP架構(gòu)理解(多核下系統(tǒng))。 筆者經(jīng)常聽(tīng)到ARM架構(gòu)時(shí),談到SMP的架構(gòu)或者AMP的架構(gòu),今天特意來(lái)了解一下,主要是針對(duì)多core處理,對(duì)于常見(jiàn)的MCU應(yīng)用場(chǎng)景,可以比較少,往往是需要較強(qiáng)的性能或者應(yīng)付復(fù)雜的場(chǎng)景,會(huì)碰到多核的場(chǎng)景。 SMP:Symmetric multiproces

    2024年02月12日
    瀏覽(95)
  • 【Java】JVM學(xué)習(xí)(四)

    【Java】JVM學(xué)習(xí)(四)

    JVM中對(duì)象的創(chuàng)建過(guò)程 對(duì)象的內(nèi)存分配 虛擬機(jī)遇到一條new指令時(shí),首先檢查是否被類(lèi)加載器加載,如果沒(méi)有,那必須先執(zhí)行相應(yīng)的類(lèi)加載過(guò)程。 類(lèi)加載就是把class加載到JVM的運(yùn)行時(shí)數(shù)據(jù)區(qū)的過(guò)程。 1)檢查加載 首先檢查這個(gè)指令的參數(shù)是否能在常量池中定位到一個(gè)類(lèi)的符號(hào)引

    2024年02月11日
    瀏覽(19)
  • 【Java】JVM學(xué)習(xí)(七)

    【Java】JVM學(xué)習(xí)(七)

    堆空間如何設(shè)置 在分代模型中,各分區(qū)的大小對(duì)GC的性能影響很大。如何將各分區(qū)調(diào)整到合適的大小,分析活躍數(shù)據(jù)的大小是很好的切入點(diǎn)。 活躍數(shù)據(jù)的大?。簯?yīng)用程序穩(wěn)定運(yùn)行時(shí)長(zhǎng)期存活對(duì)象在堆中占用的空間大小,也就是Full GC后堆中老年代占用空間的大小。 可以通過(guò)

    2024年02月11日
    瀏覽(19)
  • 【javaSE】抽象類(lèi)和接口(2)(接口部分)

    【javaSE】抽象類(lèi)和接口(2)(接口部分)

    hellohello~,大家好????,這里是E綿綿呀???,如果覺(jué)得這篇文章還不錯(cuò)的話還請(qǐng)點(diǎn)贊????收藏??????關(guān)注????,如果發(fā)現(xiàn)這篇文章有問(wèn)題的話,歡迎各位評(píng)論留言指正,大家一起加油!一起chin up!????? ?? 個(gè)人主頁(yè) :E綿綿的博客 ?? 所屬專(zhuān)欄 :JAVASE題目練習(xí)

    2024年04月28日
    瀏覽(20)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包