mport java.util.Arrays;
import java.util.List;
/**
* 排序
* @author Administrator
*
*/
public class Utils {
/**
* List排序+比较器
* @param list
* @param com
*/
public static <T> void sort(List<T> list,Comparator<T> com){
// 第一步:轉成數組
Object[] arr = list.toArray();
sort(arr,com);
// 第二步:改變容器中對應的值
for (int i = 0; i < arr.length; i++) {
list.set(i, (T) (arr[i]));
}
}
/**
* 数组的排序(降序)+Comparator接口
* @param arr
*/
public static <T> void sort(Object[] arr,Comparator<T> 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((T)arr[i],(T)arr[i+1])<0){
Object temp = arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;//假定失败
}
}
if(sorted){
break;
}
}
}
/**
* 容器排序(使用泛型方法)
*/
public static <T extends Comparable<T>> void sort3(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 sort2(T[] arr){
boolean sorted = true;
int len = arr.length;
for(int j=0;j<len-1;j++){//趟数
sorted=true;//假定有序
System.out.println("第"+(j+1)+"趟");
for(int i=0;i<len-1-j;i++){//次数
System.out.println("第"+(i+1)+"次");
if( ((Comparable)arr[i]).compareTo(arr[i+1])>0){
T temp = arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;//假定失败
}
System.out.println(Arrays.toString(arr));
}
if(sorted){
break;
}
}
System.out.println(Arrays.toString(arr));
}
/**
* 数组的排序(降序)
* @param arr
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
public static void sort(Object[] arr){
boolean sorted = true;
int len = arr.length;
for(int j=0;j<len-1;j++){//趟数
sorted=true;//假定有序
System.out.println("第"+(j+1)+"趟");
for(int i=0;i<len-1-j;i++){//次数
System.out.println("第"+(i+1)+"次");
if( ((Comparable)arr[i]).compareTo(arr[i+1])>0){
Object temp = arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
sorted=false;//假定失败
}
System.out.println(Arrays.toString(arr));
}
if(sorted){
break;
}
}
System.out.println(Arrays.toString(arr));
}
}
测试:
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Demo03 {
public static void main(String[] args) {
String str[]={"a","abcd","abc","def"};
Utils.sort2(str);
System.out.println(Arrays.toString(str)+"--");
//存放到容器中
List<String> list = new ArrayList<String>();
list.add("a");
list.add("abcd");
list.add("abc");
Utils.sort3(list);
System.out.println(list);
System.err.println(list);
}
}
转载于:https://my.oschina.net/projerry/blog/538478