62,614
社区成员
发帖
与我相关
我的任务
分享
public class Demo04 {
public static void main(String[] args){
System.out.println("================List排序+比较器================");
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("a");
list.add("abc");
list.add("def");
Utils.sort(list,new StringComp());
System.out.println(list);
}
}
public class Utils {
/**
* List的排序+比较器
*/
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接口
*/
public static void sort(Object[] arr,Comparator com){//②
boolean sorted;
for(int i=arr.length-1;i>0;i--){
sorted = true;
for(int j=0;j<i;j++){
if(com.compare(arr[j], arr[j+1])<0){
Object temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
sorted =false;
}
}
if(sorted){
break;
}
}
}
}
public class StringComp implements java.util.Comparator<String>{
@Override
public int compare(String o1, String o2) {
int len1 = o1.length();
int len2 = o2.length();
return len1-len2;
}
}