0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

比較器comparable和comparator的區(qū)別

CHANBAEK ? 來(lái)源:博客園-阿文程序猿 ? 作者:博客園-阿文程序猿 ? 2023-01-30 15:41 ? 次閱讀

一,比較器

比較變量之間的大小 -> 排序

1. 可比性

接口對(duì)實(shí)現(xiàn)它的每個(gè)類(lèi)的對(duì)象強(qiáng)制執(zhí)行排序。

實(shí)現(xiàn)此接口的對(duì)象的數(shù)組, 可以通過(guò)Arrays.sort自動(dòng)排序。

comparable中有個(gè)compareTo方法

將此對(duì)象與指定對(duì)象進(jìn)行順序比較。 當(dāng)此對(duì)象小于、等于或大于指定對(duì)象時(shí),返回負(fù)整數(shù)、零或正整數(shù)。

2. 比較器

一個(gè)比較接口,它對(duì)某些對(duì)象集合進(jìn)行排序。

可以將比較器(new了一個(gè)實(shí)現(xiàn)了comparator接口的對(duì)象)傳遞給排序方法(例如Collections.sort或Arrays.sort)。

用法場(chǎng)景:

如果這個(gè)類(lèi)是我們自己寫(xiě)的,需要比較排序, 實(shí)現(xiàn)Comprable, 如果不是我們自己寫(xiě)的代碼, 我們無(wú)法修改的代碼, 通過(guò)comparator。

二,Comparable

public class Student implements Comparable<Student>{

    public String name;
    public Integer score;
    public Integer age;

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

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

    /**
     * int aInt = gaoPeng.compareTo(tuEnXia);
     * 此對(duì)象指的是gaoPeng, 指定對(duì)象指的是tuEnXia
     * 將此對(duì)象與指定對(duì)象進(jìn)行大小比較。當(dāng)此對(duì)象小于、等于或大于指定對(duì)象時(shí),返回負(fù)整數(shù)、零或正整數(shù)
     * @return
     */
    @Override
    public int compareTo(Student other) {
        int diff = this.score - other.score;
        return diff;
    }
}
public class ComparableDemo01 {
    public static void main(String[] args) {
        Student student1 = new Student("張三", 700, 19);
        Student student2 = new Student("李四", 666, 18);
        Student student3 = new Student("王麻子", 750, 19);
//        //1. 數(shù)組排序
//        Student[] students = {student1,student2,student3};
//        Arrays.sort(students);
//        System.out.println(Arrays.toString(students));

        //2, 集合的comparable排序
        ArrayList students = new ArrayList<>();
        students.add(student1);
        students.add(student2);
        students.add(student3);
//        Collections.sort(students);
//        System.out.println(students);
//這個(gè)地方要求傳入一個(gè)Compartor, 如果傳入是個(gè)null, arraylist將會(huì)自動(dòng)調(diào)用本集合中對(duì)象的comparable方法
        students.sort(null);
        System.out.println(students);
    }
}

三,Comparator

public class PointComparator implements Comparator<Point> {

    @Override
    public int compare(Point point1, Point point2) {
        int diff = point1.x + point1.y - point2.x - point2.y;
        return diff;
    }
}
public class PointComparator {
    public static  void main(String[] args) {
        Point point1 = new Point(44, 55);
        Point point2 = new Point(58, 56);
        Point point3 = new Point(58, 96);
        //1,數(shù)組排序
//        Point[] points = {point1,point2,point3};
//        Arrays.sort(points,new PointComparator());
//        System.out.println(Arrays.toString(points));
        //2 集合排序
        LinkedList<Point> linkedList = new LinkedList<>();
        linkedList.add(point1);
        linkedList.add(point2);
        linkedList.add(point3);
//        Collections.sort(linkedList,new PointComparator());
//       linkedList.sort(new PointComparator());
//        System.out.println(linkedList);
        //3 通過(guò)匿名內(nèi)部類(lèi)排序
        Comparator<Point> comparator = new Comparator<Point>() {
            @Override
            public int compare(Point o1, Point o2) {
                int diff = o1.x + o1.y - o2.x - o2.y;
                return diff;
            }
        };
//        linkedList.sort(comparator);
        Collections.sort(linkedList,comparator);
        System.out.println(linkedList);
    }
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8279

    瀏覽量

    150056
  • 比較器
    +關(guān)注

    關(guān)注

    14

    文章

    1616

    瀏覽量

    106858
  • 對(duì)象
    +關(guān)注

    關(guān)注

    1

    文章

    38

    瀏覽量

    17343
  • 整數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    6480
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    411

    瀏覽量

    25839
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    比較輸入噪聲

    大家好,希望有人能幫上忙,我用16F1779做一些模擬的事情,我用的是所有的OPA模塊,它仍然沒(méi)有“干凈”我的信號(hào)。所以我使用了一個(gè)比較的輸出,它有點(diǎn)噪音,把RC LO通行證放在上面,得到了一個(gè)
    發(fā)表于 05-06 12:30

    請(qǐng)問(wèn)比較問(wèn)題的中斷生成有哪些原因?

    嗨,大家好。我試著從比較輸出信號(hào)的上升沿產(chǎn)生一個(gè)中斷信號(hào)。我已經(jīng)連接了60MHz時(shí)鐘(我的PSoC5LP芯片的主時(shí)鐘)到比較的時(shí)鐘輸入和ISR組件到
    發(fā)表于 07-30 12:00

    運(yùn)放和比較區(qū)別

    運(yùn)放和比較區(qū)別     運(yùn)算放大器和比較如出一轍,簡(jiǎn)單的講,比較
    發(fā)表于 03-11 21:55 ?2955次閱讀

    比較電路

    Comparator比較電路:
    發(fā)表于 10-22 09:46 ?1313次閱讀
    <b class='flag-5'>比較</b><b class='flag-5'>器</b>電路

    比較,比較原理是什么?

    比較,比較原理是什么? 比較(comparator
    發(fā)表于 03-22 13:49 ?6138次閱讀

    如何區(qū)別放大器及比較

    運(yùn)放和比較區(qū)別:  比較和運(yùn)放雖然在電路圖上符號(hào)相同,但這兩種器件確有非常大的區(qū)別,一般不
    發(fā)表于 06-25 17:23 ?4932次閱讀

    MAX9686模擬比較

    MAX9686-signal/dual very fast TTL output comparator模擬TTL輸出比較
    發(fā)表于 12-01 11:47 ?8次下載

    運(yùn)放和比較區(qū)別

    運(yùn)放和比較區(qū)別,感興趣的小伙伴們可以瞧一瞧。
    發(fā)表于 11-11 18:18 ?19次下載

    ComparableComparator分析比較

    的對(duì)象可以用作有序映射(如TreeMap)中的鍵或有序集合(TreeSet)中的元素,而不需要指定比較。 Comparable 定義 Comparable 接口僅僅只包括一個(gè)函數(shù),它
    發(fā)表于 09-27 14:49 ?0次下載

    利用比較電路方便地轉(zhuǎn)換電平和極性,use comparator circuit to convert electric polarity

    利用比較電路方便地轉(zhuǎn)換電平和極性,use comparator circuit to convert electric polarity 關(guān)鍵字:比較
    的頭像 發(fā)表于 09-20 18:33 ?982次閱讀

    MSP430FR6972的Comparator E比較模塊的使用

    最近做一個(gè)拓?fù)渥R(shí)別模塊用到了MSP430的比較Comparator E),這個(gè)比較還是蠻好用的,支持多個(gè)參考,支持
    發(fā)表于 12-16 16:55 ?10次下載
    MSP430FR6972的<b class='flag-5'>Comparator</b> E<b class='flag-5'>比較</b><b class='flag-5'>器</b>模塊的使用

    比較芯片和運(yùn)放電路的區(qū)別

    比較芯片和運(yùn)放電路的區(qū)別? 比較芯片和運(yùn)放電路都是電路中常用的模擬電路元件。雖然它們?cè)谕庑魏褪褂梅椒ㄉ嫌行┫嗨?,但它們?cè)诠ぷ髟怼?yīng)用范
    的頭像 發(fā)表于 10-23 10:19 ?971次閱讀

    比較和運(yùn)放的區(qū)別 比較和運(yùn)放的功能是否相同,能相互代替?

    比較和運(yùn)放的區(qū)別 比較和運(yùn)放的功能是否相同,能相互代替? 比較
    的頭像 發(fā)表于 11-22 16:17 ?1018次閱讀

    遲滯比較和滯回比較是一樣的嗎

    遲滯比較和滯回比較是兩種不同的電路,它們?cè)诠δ芎蛻?yīng)用上有所區(qū)別。 遲滯比較
    的頭像 發(fā)表于 07-11 09:26 ?662次閱讀

    滯回比較和雙全比較有什么區(qū)別

    滯回比較(Hysteresis Comparator)和雙全比較(這里假設(shè)“雙全比較
    的頭像 發(fā)表于 08-08 15:52 ?172次閱讀