
package collection.sort.comparator
import java.util.ArrayList
import java.util.Arrays
import java.util.List
public class ComparatorImpl {
public static void main(String[] args) {
System.out.println("==========使用Comparator排序数组===============")
String[] arr2 ={"a","abcd","abc","def"}
arr2 =new String[]{"a","abcd","abc","def"}
CompareUtils.sort(arr2,new StringCompare())
System.out.println(Arrays.toString(arr2))
System.out.println("==========使用Comparator排序List===========")
//存放容器中
List<String> list =new ArrayList<String>()
list =new ArrayList<String>()
list.add("a")
list.add("abcd")
list.add("abc")
list.add("def")
CompareUtils.sort(list,new StringCompare())
System.out.println(list)
}
}
package collection.sort.comparator;
import java.util.Comparator;
import java.util.List;
public class CompareUtils {
/**
* 数组的排序 (降序+Comparator接口)
* @param arr
*/
@SuppressWarnings("unchecked")
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;
}
}
}
/**
* List的排序(降序+Comparator接口)
* @param list
* @param com
*/
@SuppressWarnings("unchecked")
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]));
}
}
}
package collection.sort.comparator;
import java.util.Comparator;
/**
* String排序规则的业务类
* @author zhushen
*
*/
public class StringCompare implements Comparator<String>{
/**按String的长度来比较大小
*1.正数:o1>o2
*2.负数:o1<o2
*3.0:o1=o2
*/
@Override
public int compare(String o1, String o2) {
return o1.length()-o2.length();
}
}