java--排序(接口的应用)
2017-09-07 本文已影响0人
阿狸演绎
要求,定义一个接口类,然后对一个猫类中的分数进行排序,然后输入排序后每只猫的年龄和分数
思路:
(1)有一个排序的对象->有一个接口(Sort)->里面要一个方法->还要有排序方法(冒泡排序)->接口的实现->排序
1.接口:
public interface Sort {
//需要做什么,功能,功能需要做什么
//声明一个int类型的排序方法,需要两个Object 名字分别为obj,obj1的的一位数组
public int sort(Object obj,Object obj1);
}
//定义一个类(实现功能)
class Test{
//定义一个Sort的s(便于接口的调用)
public Sort s;
//构造方法,传入 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) {
//定义空数组用于交换
Object temp=obj[j];
obj[j] = obj[j+1];
obj[j+1] = temp;
}
}
}
//obj是一个一维数组
return obj;
}
}
2测试类
import java.util.Arrays;
public class User {
public static void main(String[] args) {
//创建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;
//创建一个数组用来存储
Cat arr[] = {cat,cat1,cat2,cat3};
Com cm = new Com();
Test test = new Test(cm);//将cm传入Test中
//创建一个新数组用来接收排序过后的数组
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 + "分数=" + score;
}
}
//Sort接口的实现类
class Com implements Sort{
@Override
public int sort(Object obj, Object obj1) {
Cat c=(Cat)obj;//obj转换为Cat
Cat c1 = (Cat)obj1;
if (c.score>c1.score) {
return 1;//满足条件执行排序,result=1>0
}
return -1;
}
}