Java -- 排序01

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());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值