问题来源
工作过程中,遇上了很多数组转List的问题。一直用的都是java提供的Arrays工具类里面的asList方法,没有仔细去看过源码,所以今天就研究下这个。
之前的写方法
public static void main(String[] args) {
String[] original = {"aaa", "bbb", "ccc"};
List<String> list = Arrays.asList(original);
}
asList源码解析
3800行:返回一个ArrayList对象,需要注意的是这个对象并不是java.util.ArrayList对象
java.util.Arrays方法里面有一个内部类ArrayList对象,继承了AbstractList抽象类,只实现了一部分list接口,功能并不完善。
38行:调用没有实现的remove方法,运行时提示java.lang.UnsupportedOperationException异常
建议
对于一个list的后续处理,只是简单读,可以使用Arrays工具类里面的asList方法,但是如果涉及到了修改,还是尽量避免使用这个方法。
代码改进
public static void main(String[] args) {
String[] original = {"aaa", "bbb", "ccc"};
List<String> list = Arrays.stream(original).collect(Collectors.toList());
}
38行:使用流把数组转对象,运行结果如下
产生的对象为java.util.ArrayList对象,且成功remove了一个值。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。