public class ArrayASListTest
{
public static void main(String[] args)
{
/*
String[] s = new String[]{"one","two"};
List wrongList = Arrays.asList(s);
wrongList.remove(0);
*/
String[] s = new String[]{"one","two"};
List rightList = new ArrayList(Arrays.asList(s));
wrongList.remove(0);
}
}
Arrays.asList()生成的List是java.util.Arrays$ArrayList,它的remove和add实现就是抛出UnsupportedOperationException异常。
改正方法也很简单,换成ArrayList或者LinkedList就可以了
转自:http://blog.csdn.net/yinbodotcc/archive/2009/02/18/3907292.aspx
其实API里也说明清楚了:
Returns a fixed-size list backed by the specified array. (Changes to the returned list "write through" to the array.)
如果仔细看,应该也能避免错误
分享到:
相关推荐
使用`Arrays.asList()`方法将数组转换为集合时需要注意,这种方法返回的是一个固定大小的列表,并且不允许修改集合(比如添加或删除元素)。如果尝试修改该集合,将会抛出`UnsupportedOperationException`。 将集合...
当使用`Arrays.asList()`方法将数组转换为列表时,返回的是`java.util.Arrays.ArrayList`,这是一个内部静态类,不支持添加或删除元素。如果需要一个可变的ArrayList,应使用构造函数创建新的ArrayList实例,如: ...
当需要将Array转换为ArrayList时,开发者可能误用`Arrays.asList()`。这个方法返回的是`java.util.Arrays.ArrayList`,它是一个固定大小的列表,不支持添加元素。正确做法是使用`ArrayList`的构造函数,如`...
因此,如果需要一个可变的 List,应使用 `new ArrayList(Arrays.asList(arrays))` 或者 Guava 的 `Lists.newArrayList(arrays)`。此外,使用 `List#subList` 创建的子列表并不是真正的独立列表,它会引用原始列表。...
当尝试将基本类型数组转换为List时,Arrays.asList方法只会将整个数组作为一个对象放入List,而不是将每个元素分别添加。要将数组元素分开,需要使用Integer等包装类或者使用专门的工具类如IntStream。 7. **...
可以通过使用循环边界检查或使用`Arrays.asList()`将数组转换为列表,利用列表的`get()`方法自动检查边界。 ```java int[] arr = {1, 2, 3}; List<Integer> list = Arrays.asList(arr); int element = list.get...
例如,`List<String> list = Arrays.asList("a", "b", "c"); list.stream();` 或 `String[] array = {"a", "b", "c"}; Arrays.stream(array);` 2. 中间操作 中间操作如`filter()`, `map()`, `distinct()`, `sorted...
List<Long> list = new ArrayList(Arrays.asList(1L, 2L, 3L, 4L, 5L)); for (int i = 0; i < list.size(); i++) { if (i % 2 == 0) { list.remove(i); } } // 结果:[2, 3, 5] ``` 正确的做法是在删除元素...