java - 为什么 Arrays.asList() 返回自己的 ArrayList 实现

标签 java arrays collections arraylist

我最近发现在 Java 中实际上有 2 种不同的 ArrayList 实现(迟到总比没有好......)。

所以我想知道为什么 Arrays.asList(T... a) 需要返回一个无法调整大小的列表?如果他们需要一个不可修改的列表,为什么要添加 set(int index, E element) 方法呢?

所以我的一般问题是为什么不从 Arrays.asList(T... a) 方法返回 java.util.ArrayList

您还可以从 java.util.Arrays.ArrayList 实现中获得什么?

最佳答案

你问:

Also what do you gain with the java.util.Arrays.ArrayList implementation ?

这是因为 Arrays.asList 返回的 Arrays$ArrayList 只是对原始数组的一个 View 。所以当原始数组改变时, View 也会改变。

如果使用真正的 ArrayList,则元素将被复制,并且对原始数组的更改不会影响 ArrayList。

这样做的原因很简单:

  • 性能:无需复制任何东西
  • 高效内存:不需要第二个数组

关于java - 为什么 Arrays.asList() 返回自己的 ArrayList 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4658867/

相关文章:

java - 通过 post 方法发出带有参数的 HttpsURLConnection 请求

C# OR Javascript 多次排列两个数组

java - 将集合转换为数组的最简单方法?

java - Comparator.reverseOrder() 与 Collections.reverseOrder()

java - java中方法偏好如何工作?

java - Docker-从 tar 文件安装 Java 8 和 Tomcat 8

java - 除非持续流式传输,否则 TCP 套接字的延迟很差

c++ - 使用 CUDA 计算二维像素阵列,声明适当的网格和 block 大小

C++ 处理并显示一副带有 vector 的纸牌

java - 使用 HashMap 和 List 进行嵌套双括号初始化