接口 排序:
package day02;
/**
*
* @author 李庆
* 2019-09-06
*
*/
class Student implements Compare {
String name;
int age;
int sno;
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 int getSno() {
return sno;
}
public void setSno(int sno) {
this.sno = sno;
}
public Student(String name, int age, int sno) {
super();
this.name = name;
this.age = age;
this.sno = sno;
}
//当前对象比o小就返回负数
//当前对象比o大就返回正数
//当前对像和o相等就返回0
@Override
public int compare(Object o) {
Student s = (Student) o;
return this.getSno() - s.getSno();
}
}
class Teacher implements Compare {
String name;
int salary;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public Teacher(String name, int salary) {
super();
this.name = name;
this.salary = salary;
}
@Override
public int compare(Object o) {
Teacher t = (Teacher) o;
return this.getSalary() - t.getSalary();
}
}
interface Compare {
int compare(Object o);
}
public class Day024 {
public static void sort(Object[] arr) {
Object temp = null;
for (int k = 0; k < arr.length - 1; k++) {
// 内层循环控制比较多少次
for (int i = 0; i < arr.length - k - 1; i++) {
// 由于数组中的元素实现了Comparable接口,因此可以进行强制类型转换
Compare c1 = (Compare) arr[i];// 前一个元素
Compare c2 = (Compare) arr[i + 1];// 后一个元素
// 如果前一个元素比后一个元素大,那么交换位置
if (c1.compare(c2) > 0) {
temp = arr[i];// 前一个元素赋值给temp
arr[i] = arr[i + 1];// 后一个元素赋值给前一个元素
arr[i + 1] = temp;// temp的值赋值给后一个元素
}
}
}
}
public static void main(String[] args) {
Student[] arr1 = { new Student("张飞", 18, 5), new Student("刘备", 20, 1), new Student("关羽", 25, 3),
new Student("赵云", 17, 7) };
sort(arr1);
for (Student s1 : arr1) {
System.out.print(s1.getName() + " ");
}
System.out.println();
Teacher[] arr2 = { new Teacher("马云", 888888888), new Teacher("俞敏洪", 1000000), new Teacher("袁隆平", 188888),
new Teacher("陶行知", 122126),
};
sort(arr2);
for (Teacher s2 : arr2) {
System.out.print(s2.getName() + " ");
}
}
}
排序结果:刘备 关羽 张飞 赵云
陶行知 袁隆平 俞敏洪 马云