Array.asList()注意
2016-04-21 20:51
423 查看
api:
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
参数:
遇到的问题:
原因:
这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。
Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。
解决办法:
String[] arr ={"a","b","c"};
List<String> list = Arrays.asList(arr);
List<String> arrList = new ArrayList<String>(list);
public static <T> List<T> asList(T... a)
返回一个受指定数组支持的固定大小的列表。(对返回列表的更改会“直接写”到数组。)此方法同
Collection.toArray()一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了
RandomAccess。
此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");
参数:
a- 支持列表的数组。返回:指定数组的列表视图。
遇到的问题:
java.lang.UnsupportedOperationException
在使用Arrays.asList()后调用add,remove这些method时出现 java.lang.UnsupportedOperationException异常。原因:
这是由于Arrays.asList() 返回java.util.Arrays$ArrayList, 而不是ArrayList。
Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等 method在AbstractList中是默认throw UnsupportedOperationException而且不作任何操作。
ArrayList override这些method来对list进行操作,但是Arrays$ArrayList没有override remove(),add()等,所以throw UnsupportedOperationException。
解决办法:
String[] arr ={"a","b","c"};
List<String> list = Arrays.asList(arr);
List<String> arrList = new ArrayList<String>(list);
相关文章推荐
- C#—异常应用(正则表达式)
- Java 重写(Override)与重载(Overload)
- CSS3动画
- 第七周---补
- 你最喜欢做什么?
- UVa 10006 - Carmichael Numbers
- Dism 错误 32
- HDU 2033
- Bootstrap中的datetimepicker用法总结
- vs调试技巧的总结
- Smack报错:Trust anchor for certification path not found
- 构建之法阅读笔记03
- MTK AOSP项目编译
- 算法系列15天速成——第二天 七大经典排序(中)
- 转载/redhat安装gcc
- 计算阶乘-当输入的数据是带小数时引发异常
- 2015软件工程(大一下)职业规划第四次作业
- STL vector用法介绍
- MTK android配置LCD背光和LED
- Android学习(34) -- 带缓存的网络图片下载