这个类的方法模仿了Collections.sort方法。可以对实现Comparable接口的对象所组成的数组排序,也可以对List容器排序并使用泛型,同事也定义了可以通过自定义业务逻辑来排序的sort方法。
public class Utils {
public static <T extends Comparable<T>> void sort(List<T> list){//容器排序
Object[] arr=list.toArray();//第一步:转成数组
sort(arr);
for (int i = 0; i < arr.length; i++) {//改变里面的值
list.set(i, (T)(arr[i]));
}
}
public static <T extends Comparable<T>>void sort(T[] arr){//数组排序,使用泛型
boolean sorted=true;
int len=arr.length;
for(int j=0;j<len-1;j++){
sorted=true;//假定有序
for (int i = 0; i <len-1-j; i++) {
if (((Comparable)(arr[i])).compareTo(arr[i+1])>0) {
T temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;//假定失败
}
}
if (sorted) {//减少次数
break;
}
}
}
public static void sort(Object[] arr){
boolean sorted=true;
int len=arr.length;
for(int j=0;j<len-1;j++){
sorted=true;//假定有序
for (int i = 0; i <len-1-j; i++) {
if (((Comparable)(arr[i])).compareTo(arr[i+1])>0) {
Object temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;//假定失败
}
}
if (sorted) {//减少次数
break;
}
}
}
public static void sort(Object[] arr,Comparator com){
boolean sorted=true;
int len=arr.length;
for(int j=0;j<len-1;j++){
sorted=true;//假定有序
for (int i = 0; i <len-1-j; i++) {
if (com.compare(arr[i],arr[i+1])<0) {
Object temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;//假定失败
}
}
if (sorted) {//减少次数
break;
}
}
}
}
通过本方法对泛型方法,方法定义实现有了较深了理解。