Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java.util.Arrays如何处理对ArrayList的排序(长度与大小)?_Java_Arrays_Arraylist - Fatal编程技术网

java.util.Arrays如何处理对ArrayList的排序(长度与大小)?

java.util.Arrays如何处理对ArrayList的排序(长度与大小)?,java,arrays,arraylist,Java,Arrays,Arraylist,我一直在浏览java.util.Arrays的源代码,在排序时,它总是指数组的长度(对于ArrayList,我假设它指的是E[]数据(瞬态)字段的长度)。 但是,考虑到大小字段并不总是相等,它不应该实际引用大小字段吗。在集合中找到答案,它调用toArray()返回长度等于大小的ArrayList数组,数组对副本进行排序,集合使用该数组对实际ArrayList进行排序 排序时,它总是指数组的长度 不,不是。对于每个数据类型,都有一个超负荷的数组。sort接受从index和到index参数,指定要排

我一直在浏览java.util.Arrays的源代码,在排序时,它总是指数组的长度(对于ArrayList,我假设它指的是E[]数据(瞬态)字段的长度)。
但是,考虑到大小字段并不总是相等,它不应该实际引用大小字段吗。

集合中找到答案,它调用
toArray()
返回长度等于大小的ArrayList数组,
数组
对副本进行排序,
集合
使用该数组对实际ArrayList进行排序

排序时,它总是指数组的长度

不,不是。对于每个数据类型,都有一个超负荷的
数组。sort
接受
从index
到index
参数,指定要排序的数组的确切部分,例如

这就是调用的方法:


从Java8开始,旧方法只调用
list.sort(null)

既然您已经在深入挖掘该源代码,为什么不发布一些呢?JDK的版本不止一个,所以谁知道我们都会看到您偷看的源代码?!
数组
与排序
数组列表
无关,您是否在考虑
集合
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++;
}
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);
    }
}