ArrayList与Arrays.asList()返回的List

Roa*_*oam 16 java arrays list arraylist

该方法Arrays.asList(<T>...A)返回一个List表示A.此处返回的对象List由数组支持,但不是ArrayList对象.

我正在寻找对象Arrays.asList()返回和对象之间的差异 - ArrayList一个快速的来源,告诉这些而不深入代码.

TIA.

Spa*_*kOn 33

当您调用Arrays.asList时,它不会返回java.util.ArrayList.它返回一个java.util.Arrays$ArrayList不可变列表.您无法添加它,也无法从中删除.

如果您尝试添加或删除它们中的元素,您将获得 UnsupportedOperationException

  • 这不是一成不变的.您可以使用**list.set(index,value)**.你无法改变元素的数量 (5认同)

Mar*_*oun 20

我会稍微扩展一下我的评论,

如果您使用asList它可能会出现一个问题,因为它与ArrayList对象没有区别:

List<Object> list = Array.asList(array) ;
list.remove(0); // UnsupportedOperationException :(
Run Code Online (Sandbox Code Playgroud)

在这里,您无法删除0元素,因为asList返回由指定数组支持固定大小的列表.所以你应该这样做:

List<Object> newList = new ArrayList<>(Arrays.asList(array));
Run Code Online (Sandbox Code Playgroud)

为了使newList可修改.