问题起源

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