關於 Comparable 的使用


作為一名剛上路的超初級程序員,今天終於可以邁開自己的第一步,寫一篇博客。把我自己都感動哭了。

今天看面試題時看到了一個Comparable 的使用,才發現自己好像並沒有使用過這個接口,具體這個接口是怎么用的,我在看了幾篇comparable的博客以后覺得應該把這個東西記錄下來,希望和各位都能夠得到成長。

 

首先我們舉一個排列int數組的例子,假如一個數組中有這么幾個元素,希望將他進行從小到大排序,不使用冒泡排序等算法,直接使用java中Arrays類的方法進行使用,這個方法就可以直接對數組中的元素進行排序,十分方便。

int[] array = {9,5,7,5,31,7};
        Arrays.sort(array);
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
 }
結果:5 5 7 7 9 31

 

如果說,現在有一個要求,有一個實體類User,User類中有三個屬性,id,name,price

class User{
    private int id;
    private String name;
    private int price;

需要你按照價格升序進行排序(就如上的int數組排序一樣)。那么我們做這個的時候,還是可以使用sort()方法,不同的是,之前使用的是int類型的數組,這次需要變更成為,User類型的數組按價格進行排序,這時候就需要讓User去實現comparable接口,重寫其中的方法,compareTo方法的返回值只有  -1,  0,  1

class User implements Comparable<User>{

    private int id;
    private String name;
    private int price;

    public User(int id, String name, int price) {
        this.id = id;
        this.name = name;
        this.price = price;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                '}';
    }

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

最后  new 幾個對象,放入User類型的數組中進行比較,使用sort()進行排序就可以了

        User[] users = new User[3];
        users[0] = new User(1,"壽司",29);
        users[1] = new User(2,"蛋撻",21);
        users[2] = new User(3,"牛排",25);
        Arrays.sort(users);
        for (int i = 0; i < users.length; i++) {
            System.out.println(users[i]);
        } 
結果:    User{id=2, name='蛋撻', price=21}
          User{id=3, name='牛排', price=25}
          User{id=1, name='壽司', price=29}                    

 

1234567.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM