Java Collections(0)

Java Collections

最近看了看Utility Class—Collections,发现两位大神—Josh Bloch和Neal Gafter,其中Josh Bloch就是Effective Java的作者。

这次简单介绍一下sort方法

Collections.sort()

@SuppressWarnings("unchecked")
    public static <T extends Comparable<? super T>> void sort(List<T> list) {
        list.sort(null);
    }

其中有两点值得注意
(0): 该方法是一个静态方法,说明是一个工具(实用)方法(utility method),而不是一个实例方法;
(1):另外就是关于generic type,如果对于<T extends Comparable<? super T>>中为什么用super不理解,请您看看另外一个大神Cay S. Horstmann在Core Java(Volume I, 10th Edition)的第八章Generic Programming的8.8.2 Supertype Bounds for Wildcards的例子(p446)。

接口List的sort方法

@SuppressWarnings({"unchecked", "rawtypes"})
    default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();
        Arrays.sort(a, (Comparator) c);
        ListIterator<E> i = this.listIterator();
        for (Object e : a) {
            i.next();
            i.set((E) e);
        }
    }

Note:
该方法是JDK1.8中实现的一个默认方法,是用关键字default(有关default的用法,请您看Core Java(Volume I, 10th Edition))第六章中6.1.5 Default Methods。

Arrays.sort()

 public static <T> void sort(T[] a, Comparator<? super T> c) {
        if (c == null) {
            sort(a);
        } else {
            if (LegacyMergeSort.userRequested)
                legacyMergeSort(a, c);
            else
                TimSort.sort(a, 0, a.length, c, null, 0, 0);
        }
    }

Notes:
(0)这个方法最大的亮点是采用Tim Peters对list排序的思想。
(1)TimSort for python。

下一次详细介绍TimSort中用到的binarySort(Object[] a, int lo, int hi, int start)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值