【发布时间】:2013-08-22 19:13:47
【问题描述】:
我们不能对从Arrays.asList 获得的集合执行<Collection>.add 或<Collection>.addAll 操作.. 只允许删除操作。
如果我遇到需要在List 中添加新元素而不删除List 中以前的元素的情况怎么办?我怎样才能做到这一点?
【问题讨论】:
-
为什么不能添加?
asList返回new ArrayList。哦,不一样ArrayList -
@SotiriosDelimanolis Arrays.asList 返回的列表由传入的数组支持,并且不可修改。来自the documentation(已添加重点),“返回由指定数组支持的固定大小列表。(将返回的列表更改为“写入”数组。 ) 此方法充当基于数组和基于集合的 API 之间的桥梁,与 Collection.toArray() 结合使用。返回的列表是可序列化的并实现 RandomAccess。"
-
@JoshuaTaylor 没注意到是
java.util.Arrays.ArrayList -
@SotiriosDelimanolis 好吧,javadoc 只保证它是一个固定大小的列表,虽然是的,它看起来确实是一个
java.util.Arrays$ArrayList。java.util.ArrayLists当然,一般来说,是可以修改的。 -
@prafulsurve 也不允许删除操作; Arrays.asList 返回的列表的大小是固定的。一个简单的测试将确认您既不能向列表中添加元素,也不能从列表中删除元素。