多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > Java比較器Comparable接口和Comaprator接口

Java比較器Comparable接口和Comaprator接口

來源:程序員人生   發布時間:2017-02-04 09:27:40 閱讀次數:2694次

學習Java的同學注意了!!! 
學習進程中遇到甚么問題或想獲得學習資源的話,歡迎加入Java學習交換群,群號碼:183993990  我們1起學Java!


java的比較器有兩類,分別是Comparable接口和Comparator接口。

在為對象數組進行排序時,比較器的作用非常明顯,首先來說解Comparable接口。

讓需要進行排序的對象實現Comparable接口,重寫其中的compareTo(T o)方法,在其中定義排序規則,那末就能夠直接調用java.util.Arrays.sort()來排序對象數組,實例以下:

復制代碼
class Student implements Comparable<Student>{
    private String name;
    private int age;
    private float score;
    
    public Student(String name, int age, float score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }
    
    public String toString()
    {
        return name+"\t\t"+age+"\t\t"+score;
    }

    @Override
    public int compareTo(Student o) {
        // TODO Auto-generated method stub
        if(this.score>o.score)//score是private的,為何能夠直接調用,這是由于在Student類內部
            return ⑴;//由高到底排序
        else if(this.score<o.score)
            return 1;
        else{
            if(this.age>o.age)
                return 1;//由底到高排序
            else if(this.age<o.age)
                return;
            else
                return 0;
        }
    }
}

public class ComparableDemo01 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student stu[]={new Student("zhangsan",20,90.0f),
                new Student("lisi",22,90.0f),
                new Student("wangwu",20,99.0f),
                new Student("sunliu",22,100.0f)};
        java.util.Arrays.sort(stu);
        for(Student s:stu)
        {
            System.out.println(s);
        }
    }
}
復制代碼

程序運行結果:

sunliu 22 100.0
wangwu 20 99.0
zhangsan 20 90.0
lisi 22 90.0

但是在設計類的時候,常常沒有斟酌到讓類實現Comparable接口,那末我們就需要用到另外的1個比較器接口Comparator。

從上面的實例我們可以發現,compareTo(T o)只有1個參數,而Comparator接口中必須要實現的compare(T o1,T o2)就有兩個參數。

代碼實例:

復制代碼
package edu.sjtu.ist.comutil;

import java.util.Comparator;

class Student {
    private String name;
    private int age;
    private float score;
    
    public Student(String name, int age, float score) {
        this.name = name;
        this.age = age;
        this.score = score;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public float getScore() {
        return score;
    }
    public void setScore(float score) {
        this.score = score;
    }

    public String toString()
    {
        return name+"\t\t"+age+"\t\t"+score;
    }

}

class StudentComparator implements Comparator<Student>{

    @Override
    public int compare(Student o1, Student o2) {
        // TODO Auto-generated method stub
        if(o1.getScore()>o2.getScore())
            return;
        else if(o1.getScore()<o2.getScore())
            return 1;
        else{
            if(o1.getAge()>o2.getAge())
                return 1;
            else if(o1.getAge()<o2.getAge())
                return;
            else 
                return 0;
        }
    }
    
}


public class ComparableDemo02 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        Student stu[]={new Student("zhangsan",20,90.0f),
                new Student("lisi",22,90.0f),
                new Student("wangwu",20,99.0f),
                new Student("sunliu",22,100.0f)};
        java.util.Arrays.sort(stu,new StudentComparator());
        for(Student s:stu)
        {
            System.out.println(s);
        }
    }

}
復制代碼

上述程序的運行結果與代碼實例11樣。

學習Java的同學注意了!!! 
學習進程中遇到甚么問題或想獲得學習資源的話,歡迎加入Java學習交換群,群號碼:183993990  我們1起學Java!

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 在线观看国产亚洲 | 欧美天天性影院 | 亚洲第一页国产 | 欧美性高清video | 一区二区三区四区五区六区 | 欧美做受 | 成人做爰免费视频免费看 | 中文字幕成人在线观看 | 高清欧美一级在线观看 | 亚洲校园激情 | 国产成人亚洲精品77 | 亚洲人成网址在线播放a | 得得啪在线 | 国产女人在线视频 | 欧美同志的免费video | 69视频在线是免费观看 | 午夜影院在线观看免费 | 久久福利网站 | 欧美1级 | 一区二区三区中文 | 99久久精品国产综合一区 | 亚洲情a成黄在线观看动 | 欧美18一19sex极品 | 免费成年人视频在线观看 | 另类亚洲视频 | 波多野结衣三区 | 国产精品久久久久久久久免费 | 欧美激情视频一区二区 | 国产美女亚洲精品久久久综合91 | jizz日本护士视频 | 亚洲国产成人精品青青草原100 | 亚洲福利一区二区 | 美女啪啪国产 | 中文字幕欧美日韩一 | 第一福利在线观看永久视频 | 国产一区日韩二区欧美三区 | 国产真实乱小说 | 黄色网址在线看 | 97久久影院| 最新中文字幕av专区 | 精品免费久久久久久久 |