关于java:容器之数组转化

问题起源

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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理