java--排序(接口的應用)

要求,定義一個接口類,然后對一個貓類中的分數(shù)進行排序,然后輸入排序后每只貓的年齡和分數(shù)

思路:

(1)有一個排序的對象->有一個接口(Sort)->里面要一個方法->還要有排序方法(冒泡排序)->接口的實現(xiàn)->排序

1.接口:

public interface Sort {
    //需要做什么,功能,功能需要做什么
    //聲明一個int類型的排序方法,需要兩個Object 名字分別為obj,obj1的的一位數(shù)組
    public int sort(Object obj,Object obj1);
}
//定義一個類(實現(xiàn)功能)
class Test{
    //定義一個Sort的s(便于接口的調(diào)用)
    public Sort s;
    
    //構(gòu)造方法,傳入 Sort型的變量
    public Test (Sort s){
        this.s = s;
    }
    //定義排序的方法
    public Object[] paixu(Object[] obj){
        //冒泡排序
        for (int i = 0; i < obj.length-1; i++) {
            for (int j = 0; j < obj.length-1-i; j++) {
                //判斷大小
                int result = s.sort(obj[j], obj[j+1]);
                if (result>0) {
                    //定義空數(shù)組用于交換
                    Object temp=obj[j];
                    obj[j] = obj[j+1];
                    obj[j+1] = temp;
                }
            }
        }
        //obj是一個一維數(shù)組
        return obj;
    }
}

2測試類

import java.util.Arrays;

public class User {
    public static void main(String[] args) {
        //創(chuàng)建cat的對象
        Cat cat = new Cat();
        cat.age = 12;
        cat.score = 13;
    
        Cat cat1 = new Cat();
        cat1.age = 10;
        cat1.score = 14;
        
        Cat cat2 = new Cat();
        cat2.age = 6;
        cat2.score = 12;
        
        Cat cat3 = new Cat();
        cat3.age = 19;
        cat3.score = 3;
        
        //創(chuàng)建一個數(shù)組用來存儲
        Cat arr[] = {cat,cat1,cat2,cat3};
        Com cm = new Com();
        Test test = new Test(cm);//將cm傳入Test中
        //創(chuàng)建一個新數(shù)組用來接收排序過后的數(shù)組
        Object[] newArr = test.paixu(arr);//對arr進行排序
        System.out.println(Arrays.toString(newArr));
        
        
        
    }
}
//定義一個類 Cat
class Cat{
    int age;
    int score;
    
    @Override
    public String toString() {
        return "年齡= " + this.age + "分數(shù)=" + score;
    }
}

//Sort接口的實現(xiàn)類
class Com implements Sort{
    @Override
    public int sort(Object obj, Object obj1) {
        Cat c=(Cat)obj;//obj轉(zhuǎn)換為Cat
        Cat c1 = (Cat)obj1;
        if (c.score>c1.score) {
            return 1;//滿足條件執(zhí)行排序,result=1>0
        }
        return -1;
    }
}
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內(nèi)容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內(nèi)部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,779評論 18 399
  • 轉(zhuǎn)自:http://blog.csdn.net/jackfrued/article/details/4492194...
    王帥199207閱讀 8,619評論 3 93
  • 1.import static是Java 5增加的功能,就是將Import類中的靜態(tài)方法,可以作為本類的靜態(tài)方法來...
    XLsn0w閱讀 1,267評論 0 2
  • 面向?qū)ο笾饕槍γ嫦蜻^程。 面向過程的基本單元是函數(shù)。 什么是對象:EVERYTHING IS OBJECT(萬物...
    sinpi閱讀 1,096評論 0 4
  • 過年期間,極少有人能夠抵住誘惑,控制飲食,不經(jīng)意間就會胖個三、五斤。如果是胖在身上也沒什么關系,看不出來。要是像我...
    張春華閱讀 205評論 0 0