关于java:容器之数组转化

2次阅读

共计 691 个字符,预计需要花费 2 分钟才能阅读完成。

问题起源

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

正文完
 0