我最近发现在 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/