簡單排序too young to simple

自定義排序comparable 和 comparator

##祝大家聖誕節快樂
在這裏插入圖片描述
想必大家都用過arrays的sort 排序,大家也都知道sort排序只能排序按照先後順序來排,今天我在下面給大家推薦一種更方便更好用的方法
###1.0實現流程
如果想直接對一個自定義類型的集合進行sort排序,需要讓這個自定義類型實現comparable接口,重寫比較方法(compareTo),

  1. 按照年齡從小到大的順序,排序,比較方法邏輯,如果自己的年齡小返回負數,相等返回0;其他情況返回正數;
   @Override
    public int compareTo(Person o) {
        //如果年齡小反-1
        if (this.getAge()<o.age){
            return  -1;
        //如果等於反0
        }else if (this.age==o.age){
            return  0;
        }else{
            //其他情況反0;
            return  1;
        }

    }

2.按照年齡從大到小的順序,排序,比較方法邏輯,如果自己的年齡小返回證書,相等返回0;其他情況返回負數;

 @Override
    public int compareTo(Person o) {
        //如果當前年齡小反1
        if (o.age>this.getAge()){
            return  1;
        //如果等於反0
        }else if (this.age==o.age){
            return  0;
        }else{
            //其他情況反-1;
            return  -1;
        }

    }

兩個同學的年紀相同.此時希望按照名字自然排序該怎麼辦?
再成績相同的情況下比較一下名字,可以利用字符串默認的自然排序法實現,相同的道理可以再主要指標相同的情況下對次要指標再進行比較

    @Override
    public int compareTo(Student o) {
        if (this.getAge()<o.getAge()){
            return  1;
        }else if (this.getAge()==o.getAge()){
            //return 0;
            //對姓名次邏輯進行string默認的從小到大排序
            return this.getName().compareTo(o.name);
        }else{
            return  -1;
        }
    }

###1.1使用單獨的比較器

自定義的類無需實現額外接口,只需要在sort方法內添加隊友的比較器對象就行了,從小到大 前面小返回負數,相等返回0,前面大返回正數
` @Override
public int compare(Person o1, Person o2) {
if (o1.getAge()<o2.getAge()){
return -1;
}else if (o1.getAge()==o2.getAge()){
// return 0;
//步驟和實現類一樣的操作
return o1.getName().compareTo(o2.getName());
}else{

                return 1;
            }
        }
    });`

到這裏就結束了 希望能夠幫到大家或者是一些java初學者,還有今天聖誕節,剋制自己掌控敵人,淫人妻女者,妻女被人淫.還有小編是學生黨希望大家能夠多多支持一下,雖然我發帖的速度比不上香港記者,但是我的步伐會越邁越大,謝謝!!!
別走!!!又到了GitHub推送環節!!!
下面是我的github 賬號地址大家可以跟隨一下下QAQ

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章