java - (Java8)源码中ArrayList的多个实现有什么区别

标签 java arraylist java-8

<分区>

我试图理解 Stream s 在 Java8 中断断续续地在 Java8 的源代码中偶然发现了一件有趣的事情:ArrayList似乎执行了两次:

  • 最明显的一个:java.util.ArrayList

  • 不明显的:java.util.Arrays.ArrayList ,这是一个私有(private)类。

一个奇怪的区别是普通版本更大,并且实现了List<E> ,而 Arrays.ArrayList不这样做(直接)。

为什么定义了两次?为什么使用相同的名称?

最佳答案

实际上,自 Arrays.asList() 引入以来,它就一直存在。 Array 的 ArrayList 是底层数组的 View 。如果 Array 被更改,ArrayList 将受到影响,反之亦然。

主要好处,不需要额外的空间,因为它不会将数组复制到新对象 (ArrayList),也不需要额外的时间来复制元素。

关于java - (Java8)源码中ArrayList的多个实现有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049931/

相关文章:

concurrency - ConcurrentHashMap,JDK8 中改进的并发特性

java - 使用 httpurlconnection multipart/form-data 上传数组列表

java - session 中的 ArraryList 附件

java - 通过构造函数将值传递到数据库

java - 使用 PDFBox 2.0.12 进行外部签名

java - 尝试对 String ArrayList 进行排序时,排序方法不起作用

java - 对 ArrayList 进行分页

java - 为什么并行 ForkJoinPool 加倍我的异常?

java - DecimalStyle 的使用

java - 如何提取与 CoreEntityMention 匹配的维基百科实体 (WikiDictAnnotator)