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

【TreeSet集合】比較器排序Comparator的使用

這篇具有很好參考價(jià)值的文章主要介紹了【TreeSet集合】比較器排序Comparator的使用。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

比較器排序Comparator的使用

  • 存儲(chǔ)學(xué)生對(duì)象并遍歷,創(chuàng)建TreeSet集合使用帶參構(gòu)造方法

  • 要求:按照年齡從小到大排序,年齡相同時(shí),按照姓名的字母順序排序

    創(chuàng)建學(xué)生類:

    package com.gather.set.treeset;
    public class Student1 {
        private String name;
        private int age;
        public Student1() {
        }
        public Student1(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
    }
    

    測(cè)試類:

    package com.gather.set.treeset;
    import java.util.Comparator;
    import java.util.TreeSet;
    public class TreeSetDemo03 {
        public static void main(String[] args) {
            TreeSet<Student1> ts = new TreeSet<Student1>(new Comparator<Student1>() {  //傳遞比較器接口
                @Override
                public int compare(Student1 s1, Student1 s2) {
                    int num = s1.getAge() - s2.getAge();//調(diào)方法訪問成員變量值
                    int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
                    return num2;
                }
            });
            Student1 s1 = new Student1("xishi", 29);
            Student1 s2 = new Student1("wangzhaojun", 28);
            Student1 s3 = new Student1("diaochan", 30);
            Student1 s4 = new Student1("yangyuhuan", 33);
            Student1 s5 = new Student1("lisi", 33);
            //把學(xué)生添加到集合
            ts.add(s1);
            ts.add(s2);
            ts.add(s3);
            ts.add(s4);
            ts.add(s5);
            //遍歷
            for (Student1 s : ts) {
                System.out.println(s.getName() + "," + s.getAge());
            }
        }
    }
    

【TreeSet集合】比較器排序Comparator的使用

使用比較器進(jìn)行排序在創(chuàng)建TreeSet集合時(shí)要傳遞Comparator的實(shí)現(xiàn)類對(duì)象,重寫compare()方法,根據(jù)返回值進(jìn)行排序。在compare方法體里面使用對(duì)象調(diào)方法訪問成員變量比較年齡是否相同(返回值為0),不能直接訪問私有成員變量。當(dāng)年齡相同時(shí)按照姓名的字母進(jìn)行排序,如果不相同就直接按照年齡升序返回。

  • 兩種比較方式總結(jié)
    • 自然排序:自定義類要實(shí)現(xiàn)Comparatable接口,重寫comparaTo方法,根據(jù)返回值進(jìn)行排序
    • 比較器排序:創(chuàng)建TreeSet集合時(shí)要傳遞Comparator的實(shí)現(xiàn)類對(duì)象,重寫compare(T o1,T o2)方法,根據(jù)返回值進(jìn)行排序

注意:在重寫方法時(shí),一定要注意排序規(guī)則必須按照要求的主要條件和次要條件來(lái)寫文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-473532.html

到了這里,關(guān)于【TreeSet集合】比較器排序Comparator的使用的文章就介紹完了。如果您還想了解更多內(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)文章

  • Java入門8(Comparator比較器,HashMap)

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

    2024年02月04日
    瀏覽(22)
  • 【數(shù)據(jù)結(jié)構(gòu)Java版】對(duì)象的比較之Comparable與Comparator比較器

    【數(shù)據(jù)結(jié)構(gòu)Java版】對(duì)象的比較之Comparable與Comparator比較器

    目錄 ? 一、基本類型的比較 二、對(duì)象類型的比較 (1)對(duì)象類型比較出現(xiàn)的問題 (2)重寫基類equals方法 (3)基于Comparable接口的比較 1.實(shí)現(xiàn)Comparable接口,重寫compareTo方法 (4)基于Comparator比較器的比較 1.用戶自定義比較器類,實(shí)現(xiàn)Comparator接口 2.覆寫Comparator中的compare方法

    2024年01月25日
    瀏覽(31)
  • 劍指 Offer 45. ??!把數(shù)組排成最小的數(shù)(使用比較器的定制排序;快速排序)

    劍指 Offer 45. 把數(shù)組排成最小的數(shù) 中等 662 相關(guān)企業(yè) 輸入一個(gè)非負(fù)整數(shù)數(shù)組,把數(shù)組里所有數(shù)字拼接起來(lái)排成一個(gè)數(shù),打印能拼接出的所有數(shù)字中最小的一個(gè)。 示例 1: 輸入: [10,2] 輸出: “102” 示例 2: 輸入: [3,30,34,5,9] 輸出: “3033459” 這道題在左程云算法課上講過,但是這次

    2024年02月14日
    瀏覽(22)
  • C#使用自定義的比較器對(duì)版本號(hào)(編碼)字符串進(jìn)行排序

    C#使用自定義的比較器對(duì)版本號(hào)(編碼)字符串進(jìn)行排序

    給定一些數(shù)據(jù),如下所示: “1.10.1.1.1.2”, “1.1”, “2.2”, “1.1.1.1”, “1.1.3.1”, “1.1.1”, “2.10.1.1.1”, “1.1.2.1”, “1.2.1.1”, “2.5.1.1”, “1.10.1.1”, “1.10.2.1”, “1.11.3.1”, “1.11.12.1”, “1.11.11.1”, “1.11.3.1”, “1”, “1.1.1.1.1”, “1.1.1.1.1.1” 實(shí)現(xiàn)效果: 按照每個(gè)節(jié)點(diǎn)層

    2024年02月11日
    瀏覽(42)
  • 使用java.lang.Comparable實(shí)現(xiàn)比較器和使用java.util.Collections排序

    記錄 :469 場(chǎng)景 :使用java.lang.Comparable實(shí)現(xiàn)比較器,使用java.util.Collections排序,實(shí)現(xiàn)找出最大值。 版本 :JDK 1.8,Spring?Boot 2.6.3,fastjson-2.0.33。 1.一個(gè)JSON字符串,找出最大值 1.1JSON字符串 1.2解析 把JSON字符串轉(zhuǎn)換是JSONArray類型,把值取出轉(zhuǎn)換為獨(dú)立對(duì)象,再做比較。 2.使用java.

    2024年02月15日
    瀏覽(51)
  • 記錄EF 排序配上自定義的比較器

    要求頁(yè)面文件顯示的時(shí)候能夠按照序號(hào)去排序要求如下: 數(shù)據(jù)庫(kù)有一個(gè)列存放文件名,如: 1.1文件 1.2文件 1.1.1文件 1.1.11文件1.0.txt 1.1.2(文件).pdf 現(xiàn)在需要實(shí)現(xiàn)查詢的時(shí)候按照這個(gè)列排序,并且是按照序號(hào)排序。 查詢的時(shí)候是按層級(jí)查詢的,每次查詢只會(huì)當(dāng)前所在層,1

    2024年02月08日
    瀏覽(20)
  • XL6601系列ACMP模擬比較器使用

    目錄 模擬比較器(ACMP) 簡(jiǎn)介特性 實(shí)現(xiàn) 結(jié)構(gòu)框圖 Demo 官方解釋 功能說明 正輸入與負(fù)輸入 輸出 輸出標(biāo)志 中斷 設(shè)置與操作 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的小功能,掉電檢測(cè),使用到了ACMP外設(shè),認(rèn)為學(xué)習(xí)東西后總得產(chǎn)出點(diǎn)什么,所以在此簡(jiǎn)單記錄一下。 模擬比較器模塊(ACMP)提供一個(gè)用于比

    2024年02月01日
    瀏覽(25)
  • 【STM32】STM32G4系列片內(nèi)模擬器件-比較器的使用

    【STM32】STM32G4系列片內(nèi)模擬器件-比較器的使用

    STM32G4系列內(nèi)置了片內(nèi)模擬比較器,為電機(jī)控制、電源監(jiān)測(cè)等方面的應(yīng)用提供了很大的便利。要使用片內(nèi)比較器,只需使用STM32CubeMX進(jìn)行簡(jiǎn)單配置即可。 首先,在CubeMX中打開比較器的接口,這里展示了比較器1的輸入輸出端口。 在比較器配置界面中設(shè)置好正負(fù)輸入端口,其中負(fù)

    2024年02月08日
    瀏覽(252)
  • Java ---比較器

    ? ? ? 我們知道基本數(shù)據(jù)類型的數(shù)據(jù)(除 boolean 類型外)需要比較大小的話,之間使用比較運(yùn)算符即可,但是引用數(shù)據(jù)類型是不能直接使用比較運(yùn)算符來(lái)比較大小的。那么,如何解決這個(gè)問題呢? ? ? ?在 Java 中經(jīng)常會(huì)涉及到對(duì)象數(shù)組的排序問題,那么就涉及到對(duì)象之間的比

    2024年02月03日
    瀏覽(25)
  • 認(rèn)識(shí)比較器

    Java中比較器是排序、加入有序數(shù)組等操作的時(shí)候必須要有的,沒有的話會(huì)報(bào)錯(cuò),例如下面這段代碼: 運(yùn)行時(shí)會(huì)發(fā)生下面的異常 Exception in thread \\\"main\\\" java.lang.ClassCastException: dataStructure.heap.Student cannot be cast to java.lang.Comparable ?? ?at java.util.ComparableTimSort.countRunAndMakeAscending(Compar

    2023年04月25日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包