问题起源
工作过程中,遇上了很多数组转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了一个值。