美文网首页
2021-05-17 Arrays.sort方法与Collect

2021-05-17 Arrays.sort方法与Collect

作者: 归去来ming | 来源:发表于2021-05-17 18:09 被阅读0次

    1,Arrays.sort方法的参数分为基本数据类型和对象类型
    (1)参数为基本类型:双轴快排

        public static void sort(int[] a) {
            DualPivotQuicksort.sort(a, 0, a.length - 1, null, 0, 0);
        }
    

    (2)参数为对象类型:归并排序

        public static void sort(Object[] a) {
            if (LegacyMergeSort.userRequested)
                legacyMergeSort(a);
            else
                ComparableTimSort.sort(a, 0, a.length, null, 0, 0);
        }
    

    2,Collections.sort方法
    实现类很多,拿ArrayList类为例:

        public void sort(Comparator<? super E> c) {
            final int expectedModCount = modCount;
            Arrays.sort((E[]) elementData, 0, size, c);
            if (modCount != expectedModCount) {
                throw new ConcurrentModificationException();
            }
            modCount++;
        }
    

    这里调用的是Arrays.sort方法中参数为对象类型的方法

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

    相关文章

      网友评论

          本文标题:2021-05-17 Arrays.sort方法与Collect

          本文链接:https://www.haomeiwen.com/subject/vaojjltx.html