ComparatorImpl
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)
}
}
CompareUtils
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]));
}
}
}
StringCompare
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();
}
}