ski*_*iwi 5 java arraylist java-8
我试图Stream在Java8中理解s,间歇性地偶然发现了Java8的源代码中有趣的东西:ArrayList似乎实现了两次:
显而易见的一个: java.util.ArrayList
不明显的一个:java.util.Arrays.ArrayList,这是一个私人阶层.
一个奇怪的区别是正常版本更大,并且实现List<E>,而Arrays.ArrayList不是(直接).
为什么定义两次?为什么同名?
实际上它从那时起就Arrays.asList()引入了.Array的ArrayList是底层数组的视图.如果Array被更改,ArrayList将受到影响,反之亦然.
主要好处是,不需要额外的空间,因为它不会将数组复制到新对象(ArrayList),也没有额外的时间来复制元素.