国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java中compareTo和compare方法之比較

2019-11-06 06:16:30
字體:
來源:轉載
供稿:網友

學習java的同學注意了!!! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986  我們一起學Java!

這兩個方法經常搞混淆,現對其進行總結以加深記憶。

compareTo(Object o)方法是java.lang.Comparable<T>接口中的方法,當需要對某個類的對象進行排序時,該類需要實現Comparable<T>接口的,必須重寫public int compareTo(T o)方法,比如MaPReduce中Map函數和Reduce函數處理的 <key,value>,其中需要根據key對鍵值對進行排序,所以,key實現了WritableComparable<T>接口,實現這個接口可同時用于序列化和反序列化。WritableComparable<T>接口(用于序列化和反序列化)是Writable接口和Comparable<T>接口的組合;compare(Object o1,Object o2)方法是java.util.Comparator<T>接口的方法,它實際上用的是待比較對象的compareTo(Object o)方法。

下面我們寫一來看看上面兩個方法是怎么用的:

首先,寫一個User類,代碼如下:

復制代碼
public class User implements Comparable<Object>{    int id;    String name;        public User(int id,String name){        this.id = id;        this.name = name;    }    /*     * Getters and Setters    */    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }           @Override    public int compareTo(Object o) {        if(this ==o){            return 0;                    }        else if (o!=null && o instanceof User) {               User u = (User) o;             if(id<=u.id){                return -1;            }else{            return 1;        }    }else{        return -1;    }}}復制代碼

接下來,我們寫一個測試類Test:

復制代碼
public class Test{    //編寫Comparator,根據User的id對User進行排序    private static final Comparator<User> COMPARATOR = new Comparator<User>() {       public int compare(User o1, User o2) {           return o1.compareTo(o2);//運用User類的compareTo方法比較兩個對象             }   };        public static void main(String[] args) {        ArrayList<User> student = new ArrayList<User>();        User user1 = new User(1,"yueliming");        User user2 = new User(2,"yueliming");            Collections.sort(student, COMPARATOR);//用我們寫好的Comparator對student進行排序        for(int i=0;i<student.size();i++){            System.out.println(student.get(i).getId());        }    }}復制代碼

學習Java的同學注意了!!! 學習過程中遇到什么問題或者想獲取學習資源的話,歡迎加入Java學習交流群,群號碼:523047986  我們一起學Java!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永安市| 简阳市| 昆山市| 博野县| 黎城县| 抚州市| 阿拉善左旗| 乌兰县| 文昌市| 武山县| 璧山县| 平利县| 临泽县| 师宗县| 克拉玛依市| 双柏县| 桃园市| 江达县| 恩平市| 邹城市| 女性| 宣武区| 兴安县| 大宁县| 长宁县| 北辰区| 平顺县| 屏边| 嘉善县| 舞阳县| 鄯善县| 嘉义县| 阿勒泰市| 徐闻县| 崇明县| 光泽县| 班戈县| 东港市| 青龙| 景泰县| 娄烦县|