JAVA基本类型与引用类型---内置类排序+Comparator接口+Comparable类

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);

}

}

猜你喜欢

转载自blog.csdn.net/zhang1996922/article/details/79547501