package com.hike.javase.interfacetest;
//创建学生类,并实现Comparable接口
public class Student implements Comparable{
private int id;
private String name;
private int grade;
private double score;
public Student() {
}
public Student(int id, String name, int grade, double score) {
this.id = id;
this.name = name;
this.grade = grade;
this.score = score;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getGrade() {
return grade;
}
public void setGrade(int grade) {
this.grade = grade;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", grade=" + grade +
", score=" + score +
'}';
}
//想要使用不同的排序策略,只需要改变this.后面的属性就好
@Override
public int compareTo(Object o) {
if(o instanceof Student) {
Student s = (Student) o; //对象的造型,造型有风险,提前判断一下
/*if (this.getGrade() == s.getGrade()) { //注意:0.getRadius()因为多态的副作用,导致子类的特有方法不可以被调取
return 0;
} else if (this.getGrade() > s.getGrade()) {
return 1;
} else {
return -1;
}*/
return this.grade - ((Student)o).grade;
}
return 0X80000000;
}
}
package com.hike.javase.interfacetest;
//创建通用的排序方法
public class Sorter {
public static void sort(Comparable[] arr){ //数组的类型不是Student、String某一具体的类型,只要是可比较的数组,都可以进行比较
for(int i = 0; i < arr.length - 1; i++){
for(int j = 0; j < arr.length - 1 - i; j++){
if(arr[j].compareTo(arr[j + 1]) > 0){
Comparable tem = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tem;
}
}
}
}
}
package com.hike.javase.interfacetest;
public class ComparebleTest {
public static void main(String[] args) {
Student s1 = new Student(1, "张三", 4, 90);
Student s2 = new Student(2, "李四", 5, 66);
//System.out.println(s1.compareTo(s2));
Student[] stuArr = new Student[5];
stuArr[0] = s1;
stuArr[1] = s2;
stuArr[2] = new Student(3,"王五",6,99);
stuArr[3] = new Student(4,"赵六",3,70);
stuArr[4] = new Student(5,"小微",2,60);
for(Student s : stuArr){
System.out.println(s.toString());
}
System.out.println("****************************************");
Sorter.sort(stuArr);
for(Student s : stuArr){
System.out.println(s.toString());
}
String[] stringArr = {"aa","zz","bbb","aaa"};
Sorter.sort(stringArr);
for(String s : stringArr){
System.out.println(s);
}
}
}
java基础【使用接口实现通用的排序算法】
最新推荐文章于 2023-03-16 17:15:31 发布