ArrayList与Arrays.asList()返回的List

时间:2014-09-08 17:11:45

标签: java arrays list arraylist

方法Arrays.asList(<T>...A)返回A的{​​{3}}表示形式。 这里返回的对象是由数组支持的List,但不是ArrayList对象。

我正在寻找对象List返回和Arrays.asList()对象之间的差异 - 这是一个快速的来源,可以在不深入代码的情况下告诉它们。

TIA。

2 个答案:

答案 0 :(得分:25)

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

如果您尝试添加或删除元素,则会获得UnsupportedOperationException

答案 1 :(得分:16)

我会稍微扩展我的评论,

如果您使用asList,则可能会出现一个问题,因为它与ArrayList对象不同:

List list = Array.asList(array) ;
list.remove(0); //UnsupportedOperationException :(

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

List newList = new ArrayList(Arrays.asList(array));

为了使newList可修改。