package org.example.ms.cl;
/**
* @author Gavin.luo
* @title: Comparator
* @projectName MyData
* @description:
* @date 2022/3/7 9:25
*/
public interface Comparator<T> {
int compareTo(T o1,T o2);
}
package org.example.ms.cl;
/**
* @author Gavin.luo
* @title: Cat
* @projectName MyData
* @description:
* @date 2022/3/5 15:28
*/
public class Cat implements Comparable<Cat>{
int weight,height;
public Cat(int weight,int height){
this.weight = weight;
this.height = height;
}
@Override
public String toString() {
return "Cat{" +
"weight=" + weight +
", height=" + height +
'}';
}
}
package org.example.ms.cl;
/**
* @author Gavin.luo
* @title: CatWeightComparator
* @projectName MyData
* @description:
* @date 2022/3/8 16:03
*/
public class CatHeightComparator implements Comparator<Cat> {
@Override
public int compareTo(Cat o1, Cat o2) {
if(o1.height<o2.height) return -1;
else if(o1.height>o2.height) return 1;
else return 0;
}
}
package org.example.ms.cl;
/**
* @author Gavin.luo
* @title: CatWeightComparator
* @projectName MyData
* @description:
* @date 2022/3/8 16:03
*/
public class CatWeightComparator implements Comparator<Cat> {
@Override
public int compareTo(Cat o1, Cat o2) {
if(o1.weight<o2.weight) return -1;
else if(o1.weight>o2.weight) return 1;
else return 0;
}
}
package org.example.ms.cl;
/**
* @author Gavin.luo
* @title: Sortor
* @projectName MyData
* @description:
* @date 2022/3/7 9:27
*/
public class Sortor<T> {
public void sortCat(T[] arr,Comparator<T> comparator){
//冒泡排序 升序
for (int i=0;i<arr.length -1;i++){
int minPos = i;
for(int j=i+1;j < arr.length;j++){
minPos = comparator.compareTo(arr[j],arr[minPos]) == -1?j:minPos;
}
swapCat(arr,i,minPos);
}
}
void swapCat(T[] arr,int i,int j){
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
package org.example.ms.cl;
import java.util.Arrays;
/**
* @author Gavin.luo
* @title: TestComparator
* @projectName MyData
* @description:
* @date 2022/3/7 9:34
*/
public class TestComparator {
public static void main(String[] args) {
Cat[] cats = {new Cat(3,5),new Cat(1,6),new Cat(2,3)};
Sortor<Cat> catSortor=new Sortor<>();
catSortor.sortCat(cats,new CatWeightComparator());
System.out.println(Arrays.toString(cats));
catSortor.sortCat(cats,new CatHeightComparator());
System.out.println(Arrays.toString(cats));
}
}