91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaSE中compare、compareTo有什么區別

發布時間:2023-06-30 17:53:22 來源:億速云 閱讀:99 作者:栢白 欄目:開發技術

今天小編給大家分享的是JavaSE中compare、compareTo有什么區別,相信很多人都不太了解,為了讓大家更加了解,所以給大家總結了以下內容,一起往下看吧。一定會有所收獲的哦。

目錄

 1.前言

在java當中,若是進行比較,大家可能第一時間想到,==或是!=,這種數學上的比較符>、

接下來,我就分別介紹并演示這兩種實現方法。

2.環境說明

環境說明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE

3.概述

3.1Comparable 簡介

首先Comparable是一個排序接口,這也就表示若一個類實現了Comparable接口,則意味著該類支持排序。

public interface Comparable<T> {
    public int compareTo(T o);
}

3.2Comparable 定義

Comparable 接口僅提供了一個函數方法compareTo(),它的定義如下:

JavaSE中compare、compareTo有什么區別

那具體該方法有何作用呢?請接著往下看。

compareTo()方法返回的是一個int類型值, 這里我著重給大家介紹一下。

若你使用compareTo()進行a與b的比較,eg:a.compareTo(b),那么,返回值有三種結果情況,分別如下:

  • 若返回值為負數,則說明a

  • 若返回值為0,則說明a=b;

  • 若返回值為正數,則說明a>b;

其中,String類就是一個典例,它就是實現了Comparable接口。

JavaSE中compare、compareTo有什么區別

 其中就重寫了Comparable接口中的compareTo()方法,具體實現邏輯大家可以借鑒。

JavaSE中compare、compareTo有什么區別

3.3Comparator 簡介

接下來,我再給大家講解一下Comparator接口。

首先Comparator是一個比較器接口,用于類設計已經完成,還想排序(Arrays)的情況下使用。

目前它只提供了兩個函數供使用。

public interface Comparator<T> {
    int compare(T o1, T o2);
    boolean equals(Object obj);
}

3.4Comparator 定義

針對Comparator接口,若一個類實現了它,只需要實現compare()方法即可,可以不用實現equals方法,因為任何類的超類都是Object,查看Object類也可得知equals()就被實現了。

該方法 int compare(T a, T b) 是“比較a和b的大小”。返回值結果情況與compareTo()方法一致,具體如下:

  • 若返回值為負數,則說明a

  • 若返回值為0,則說明a=b;

  • 若返回值為正數,則說明a>b;

3.5區別

方法的比較

1.compareTo(Object obj)方法是java.lang.Comparable接口中的方法, 當需要對類的對象進行排序時,該類需要實現Comparable接口,必須重寫compareTo(T o)方法。

比如String類等一些類默認實現了該接口,重寫了 compareTo()方法,例如s1.compareTo(s2),自然返回值就是s1 與 s2 的ASC碼差值,其實就是字典排序;

2.compare(Object o1, Object o2)方法是java.util.Comparator接口的方法, 它實際上用的是待比較對象的compare(T o1, T o2)方法;

3、Comparable 是排序接口,而Comparator 是比較器接口。

4. 實例演示

4.1.Comparable使用演示

接下來我先給大家演示下如何實現Comparable接口的compareTo()方法進行排序。

@Data
public class Dog implements Comparable<Dog> {
    private String type;
    private double price;
    public Dog() {
    }
    public Dog(String name, int price) {
        this.type = name;
        this.price = price;
    }
    public String toString() {
        return "狗品種為:" + type + ",價格為:" + price;
    }
    @Override
    public int compareTo(Dog o) {//升序
        if (this.price > o.price) {
            return 1;
        } else if (this.price < o.price) {
            return -1;
        }
        return 0;
    }
}

寫個main函數進行測試驗證。演示代碼如下:

public class ComparableTest {
    public static void main(String[] args) {
        Dog[] dogs = {
                new Dog("泰迪", 10),
                new Dog("柯基", 78),
                new Dog("柴犬", 55),
                new Dog("藏獒", 42),
                new Dog("斗牛犬", 15)
        };
        //升序
        Arrays.sort(dogs);
        for (Dog dog : dogs) {
            System.out.println(dog);
        }
    }
}

執行main函數,控制臺打印如下:

JavaSE中compare、compareTo有什么區別

 我們再調整一下排序規則,改為按對象中price價格進行降序。

@Override
public int compareTo(Dog o) {//降序
    if (this.price < o.price) {
        return 1;
    } else if (this.price > o.price) {
        return -1;
    }
    return 0;
}

再來看下價格。

JavaSE中compare、compareTo有什么區別

4.2 Comparable使用演示

我們來實現一個比較器,實現Comparator接口的compare()方法,其中泛型我直接指定Dog對象。演示代碼具體如下:

public class ComparatorDog implements Comparator<Dog> {
    @Override
    public int compare(Dog o1, Dog o2) {
        //升序
        if (o1.getPrice() > o2.getPrice()) {
            return 1;
        } else if (o1.getPrice() < o2.getPrice()) {
            return -1;
        }
        return 0;
    }
}

寫個測試類進行測試用例打印:

public static void main(String[] args) {
    Dog[] dogs = {
            new Dog("泰迪", 10),
            new Dog("柯基", 78),
            new Dog("柴犬", 55),
            new Dog("藏獒", 42),
            new Dog("斗牛犬", 15)
    };
    //升序
    Arrays.sort(dogs,new ComparatorDog());
    for (Dog dog : dogs) {
        System.out.println(dog);
    }
}

接下來運行main函數,大家請看控制臺輸出截圖:

JavaSE中compare、compareTo有什么區別

我們稍微調整下排序規則,將升序改為降序。具體修改如下:

@Override
public int compare(Dog o1, Dog o2) {
    //降序
    if (o1.getPrice() < o2.getPrice()) {
        return 1;
    } else if (o1.getPrice() > o2.getPrice()) {
        return -1;
    }
    return 0;
}

我們運行main函數輸出結果如下截圖:

JavaSE中compare、compareTo有什么區別

關于JavaSE中compare、compareTo有什么區別就分享到這里了,希望以上內容可以對大家有一定的參考價值,可以學以致用。如果喜歡本篇文章,不妨把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鞍山市| 青浦区| 南开区| 大城县| 龙江县| 马公市| 湖南省| 崇明县| 隆子县| 西安市| 新宁县| 莎车县| 汉寿县| 体育| 宁津县| 无为县| 勐海县| 新邵县| 彰化县| 略阳县| 衡阳县| 湘潭县| 错那县| 夹江县| 玉溪市| 石门县| 丰都县| 香格里拉县| 天等县| 临沭县| 淳安县| 河北省| 奉节县| 上蔡县| 鸡东县| 绩溪县| 西乌珠穆沁旗| 苍梧县| 开原市| 澄迈县| 金华市|