策略模式
简单排序
int[] arr={1,2,3};
Sorter.sort(arr)
自定义排序
对猫Cat进行排序
排序方式 重量 身高
增加compareTo方法进行自定义排序
扩展接口
想对将来的所有类型进行排序
要使用Sorter,那么对不起参数麻烦自己实现Comparable接口,复写compareTo方法(返回:1,0,-1)
接口实现
首先自定义接口
- 自定义Comparable接口
- compareTo方法
- 参数泛型
接口
public interface Comparable<T> {
int compareTo(T o);
}
实现
public class Cat implements Comparable<Cat> {
private int fish;
public Cat(int fish) {
this.fish = fish;
}
@Override
public int compareTo(Cat o) {
if (this.fish < o.fish) {
return -1;
} else if (this.fish > o.fish) {
return 1;
}
return 0;
}
@Override
public String toString() {
return "Cat{" + "fish=" + fish + '}';
}
}
修改Sorter工具类
public class Sorter {
public static void sort(Comparable[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
int minPos = i;
for (int j = i + 1; j < arr.length; j++) {
minPos = arr[j].compareTo(arr[minPos]) == -1 ? j : minPos;
}
swap(arr, i, minPos);
}
}
static void swap(Comparable[] arr, int i, int j) {
Comparable temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
调用
public static void main(String[] args) {
Cat[] arr = new Cat[] {new Cat(3), new Cat(2), new Cat(1)};
Sorter.sort(arr);
System.out.println(Arrays.toString(arr));
}