Java -- 排序01

来源:互联网 发布:矩阵向量表示方法 编辑:程序博客网 时间:2024/05/17 05:55

Java – 排序01(引用类型中的内置类型)
一.Comparable 接口
二.Comparator 接口(比较器)

    public class StringCamp implements Comparator<String>{        @Override        public int compare(String o1, String o2) {            int len1 = o1.length();            int len2 = o2.length();            return len1 - len2;        }    }
/**     * 数组排序 + Comperator,降序     *     */    public static void sort(Object[] arr, Comparator 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(arr[i],arr[i + 1]) < 0)                {                    Object temp = arr[i];                    arr[i] = arr[i + 1];                    arr[i + 1] = temp;                    sorted = false;                }            }            if (sorted) {                break;            }        }    }
     public static void main(String[] args) {            String[] arr1 = {"adaf","aagbl","ceghl"};            sort(arr1,new StringCamp());//根据字符串长度降序排序            System.out.println(Arrays.toString(arr1));        }

三.Collections(类)

       1.可以额外提供业务排序类,实现Comparator接口,重写其下的compare方法
public static <T> void sort(List<T> list, Comparator<? super T> com)public class CollectionsDemo {    public static void main(String[] args) {        List<String> list = new ArrayList<>();        list.add("a");        list.add("c");        list.add("d");        list.add("e");        list.add("b");        Collections.sort(list,new StringCamp());        System.out.println(list.toString());    }}
       2.使用实体类实现lang包下的comparable接口,重写compare to 方法
public static <T extends Comparable<? super T>> void sort(List<T> list) public class CollectionsDemo {    public static void main(String[] args) {        List<String> list = new ArrayList<>();        list.add("a");        list.add("c");        list.add("d");        list.add("e");        list.add("b");        Collections.sort(list);        System.out.println(list.toString());    }}
0 0