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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

一,比較器

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

1. 可比性

接口對實現它的每個類的對象強制執(zhí)行排序。

實現此接口的對象的數組, 可以通過Arrays.sort自動排序。

comparable中有個compareTo方法

將此對象與指定對象進行順序比較。 當此對象小于、等于或大于指定對象時,返回負整數、零或正整數。

2. 比較器

一個比較接口,它對某些對象集合進行排序。

可以將比較器(new了一個實現了comparator接口的對象)傳遞給排序方法(例如Collections.sort或Arrays.sort)。

用法場景:

如果這個類是我們自己寫的,需要比較排序, 實現Comprable, 如果不是我們自己寫的代碼, 我們無法修改的代碼, 通過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);
     * 此對象指的是gaoPeng, 指定對象指的是tuEnXia
     * 將此對象與指定對象進行大小比較。當此對象小于、等于或大于指定對象時,返回負整數、零或正整數
     * @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. 數組排序
//        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);
//這個地方要求傳入一個Compartor, 如果傳入是個null, arraylist將會自動調用本集合中對象的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,數組排序
//        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 通過匿名內部類排序
        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);
    }
}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8611

    瀏覽量

    151251
  • 比較器
    +關注

    關注

    14

    文章

    1651

    瀏覽量

    107232
  • 對象
    +關注

    關注

    1

    文章

    38

    瀏覽量

    17401
  • 整數
    +關注

    關注

    0

    文章

    13

    瀏覽量

    6539
  • 數組
    +關注

    關注

    1

    文章

    417

    瀏覽量

    25960
收藏 人收藏

    評論

    相關推薦

    比較輸入噪聲

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

    請問比較問題的中斷生成有哪些原因?

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

    運放和比較區(qū)別

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

    比較電路

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

    比較,比較原理是什么?

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

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

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

    MAX9686模擬比較

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

    運放和比較區(qū)別

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

    ComparableComparator分析比較

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

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

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

    MSP430FR6972的Comparator E比較模塊的使用

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

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

    比較芯片和運放電路的區(qū)別? 比較芯片和運放電路都是電路中常用的模擬電路元件。雖然它們在外形和使用方法上有些相似,但它們在工作原理、應用范
    的頭像 發(fā)表于 10-23 10:19 ?1376次閱讀

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

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

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

    遲滯比較和滯回比較是兩種不同的電路,它們在功能和應用上有所區(qū)別。 遲滯比較
    的頭像 發(fā)表于 07-11 09:26 ?1885次閱讀

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

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