Java数组转List

1.Arrays.asList(strArray)

通过 Arrays.asList(strArray) 方式,将数组转换List后,
不能对List增删,只能查改,否则抛异常。

Arrays.asList(strArray)返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。java.util.Arrays.ArrayList类具有 set(),get(),contains()等方法,但是不具有添加add()或删除remove()方法,所以调用add()方法会报错

2.new ArrayList(Arrays.asList(strArray))

通过ArrayList的构造器,将Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList

需要在将数组转换为List后,对List进行增删改查操作,在List的数据量不大的情况下,可以使用

3.Collections.addAll() 最高效

ArrayList< String> arrayList = new ArrayList<String>(strArray.length);
Collections.addAll(arrayList, strArray);

通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。
对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度

4.Java8可通过stream流将3种基本类型数组转为List

如果JDK版本在1.8以上,可以使用流stream来将下列3种数组快速转为List,分别是int[]、long[]、double[],
其他数据类型比如short[]、byte[]、char[],在JDK1.8中暂不支持。

转换代码示例如下:

List<Integer> intList= Arrays.stream(new int[] { 1, 2, 3, }).boxed().collect(Collectors.toList());
List<Long> longList= Arrays.stream(new long[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
List<Double> doubleList= Arrays.stream(new double[] { 1, 2, 3 }).boxed().collect(Collectors.toList());

如果是String数组,可以使用Stream流这样转换:

String[] arrays = {"tom", "jack", "kate"};
List<String> stringList= Stream.of(arrays).collect(Collectors.toList());
posted @ 2021-06-29 21:28  叶落无蝉鸣  阅读(715)  评论(0编辑  收藏  举报