我最近发现Java中实际上有两种不同的ArrayList
实现(迟到总比不到好吧...)。
那么,我想知道为什么Arrays.asList(T... a)
需要返回一个不可调整大小的列表?如果他们需要一个不可修改的列表,为什么还要添加set(int index, E element)
方法呢?
所以我的一般问题是,为什么Arrays.asList(T... a)
方法不返回java.util.ArrayList
?
此外,java.util.Arrays.ArrayList
实现能带来什么好处?
@Test public void testView() { Integer[] original = new Integer[] {1}; List<Integer> view = Arrays.asList(original); original[0] = 2; assertThat(view).containsExactly(2);}
- Ralphview.set(0, 42)
也会改变original[0]
。Arrays.ArraysList包含对原始数组的private final E[] a
引用。 - Yossarian42