package text;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
/**
* 引用类型之间的比较排序
*
* @author Lenovo
*
*/
public class Demo1 {
public static void main(String[] args) {
System.out.println("======使用Comparator排序数组=========");
String[] arr= {"kah","iii","ksue","idi"};
Utils.sorts(arr,new utils2());
System.out.println(Arrays.toString(arr));
System.out.println("========list排序+比较器=============");
List<String> list=new ArrayList<String>();
list.add("kah");
list.add("iii");
list.add("ksue");
list.add("idi");
Utils.sort(list,new utils2());
System.out.println(list);
}
}
======================================================================
package text;
import java.util.Comparator;
import java.util.List;
/**
* 排序类
* @author Lenovo
*
*/
public class Utils {
/**
* 容器排序(泛型)+Comparator接口
*/
public static<T extends Comparable<T>> void sort(List<T> list,Comparator<T> com) {
//将list转换成数组
Object[] arr=list.toArray();
sorts(arr, com);
//改变容器中的值
for(int i=0;i<arr.length;i++) {
list.set(i,(T)arr[i]);
}
}
/**
* 数组排序+Comparator接口
*
*/
public static<T> void sorts(Object[] arr,Comparator<T> com) {
Boolean reslt=true;
int len=arr.length;
for(int j=0;j<len-1;j++) {
reslt=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;
reslt=false;
}
}
if(reslt) {
break;
}
}
}
/**
* 容器排序(泛型)+comparble接口----》基本类型
*/
public static<T extends Comparable<T>> void sort(List<T> list) {
//将list转换成数组
Object[] arr=list.toArray();
arr(arr);
//改变容器中的值
for(int i=0;i<arr.length;i++) {
list.set(i,(T)arr[i]);
}
}
/**
* 数组排序(泛型)
* @param arr
*/
public static<T extends Comparable<T>> void arrs(T[] arr) {
Boolean reslt=true;
int len=arr.length;
for(int j=0;j<len-1;j++) {
reslt=true;
for(int i=0;i<len-1-j;i++) {
if(((Comparable)arr[i]).compareTo(arr[i+1])>0) {//按照unicode码来排序
T temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
reslt=false;
}
}
if(reslt) {
break;
}
}
}
/**
* 从小到大排序
* @param arr
*/
public static void arr(Object[] arr) {
Boolean reslt=true;
int len=arr.length;
for(int j=0;j<len-1;j++) {
reslt=true;
for(int i=0;i<len-1-j;i++) {
if(((Comparable)arr[i]).compareTo(arr[i+1])>0) {//按照unicode码来排序
Object temp=arr[i];
arr[i]=arr[i+1];
arr[i+1]=temp;
reslt=false;
}
}
if(reslt) {
break;
}
}
}
================================================================================================
package text;
import java.util.Comparator;
/**
* 排序规则类(降序)
* @author Lenovo
*
*/
public class utils2 implements Comparator{
//按长度排序
@Override
public int compare(String o1, String o2) {
int len1=o1.length();
int len2=o2.length();
return len1-len2;
}
================================================================================================
package text;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* collection提供了大量的处理容器的方法
* @author Lenovo
*
*/
public class Demo2 {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("kah");
list.add("iii");
list.add("ksue");
list.add("idi");
Collections.sort(list,new utils2());
System.out.println(list);
}
}