栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

老程序员Java数组转List都这样操作

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

老程序员Java数组转List都这样操作

文章目录
  • 一、使用Arrays.asList()
  • 二、通过ArrayList的构造器
  • 三、集合工具类Collections.addAll()
  • 四、Java8 stream流
  • 五、Java9 内置方法
  • 六、第三方的工具类

一、使用Arrays.asList()

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

测试代码如下:

public static void way1(){
        List list = Arrays.asList("1", "2");
        //对转换后的list插入一条数据
        list.add("3");
        System.out.println(list);
}
// 调用代码省略

运行后报错:

报错原因:

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

使用场景:Arrays.asList(strArray)方式仅能用在将数组转换为List后,不需要增删其中的值,仅作为数据源读取使用。

二、通过ArrayList的构造器

将Arrays.asList()的返回值由java.util.Arrays.ArrayList转为java.util.ArrayList。

测试代码:

public static void way2(){
        ArrayList list = new ArrayList(Arrays.asList("1", "2")) ;
        //对转换后的list插入一条数据
        list.add("3");
        System.out.println(list);
}
// 调用代码省略

运行结果:

[1, 2, 3]
三、集合工具类Collections.addAll()

根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。

测试代码:

public static void way3(){
    String[] strArray = {"1", "2"};
    ArrayList< String> arrayList = new ArrayList(strArray.length);
    Collections.addAll(arrayList, strArray);
    arrayList.add("3");
    System.out.println(arrayList);
}
// 调用代码省略

运行结果:

[1, 2, 3]

使用场景:

需要在将数组转换为List后,对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度。

四、Java8 stream流

如果JDK版本在1.8以上,可以使用流stream来将下列3种数组快速转为List,分别是int[]、long[]、double[],其他数据类型比如short[]、byte[]、char[],在JDK1.8中暂不支持。由于这只是一种常用方法的封装,不再纳入一种崭新的数组转List方式,暂时算是java流送给我们的常用工具方法吧。

测试代码:

public static void way4(){
    // String数组
    String[] arrays = {"a", "b", "c"};
    List stringList= Stream.of(arrays).collect(Collectors.toList());
    // int[]、long[]、 double[]
    List intList= Arrays.stream(new int[] { 1, 2, 3, }).boxed().collect(Collectors.toList());
    List longList= Arrays.stream(new long[] { 1, 2, 3 }).boxed().collect(Collectors.toList());
    List doubleList= Arrays.stream(new double[] { 1, 2, 3 }).boxed().collect(Collectors.toList());

    System.out.println(stringList);
    System.out.println(intList);
    System.out.println(longList);
    System.out.println(doubleList);
}
五、Java9 内置方法

测试代码:

List list1 = List.of("4", "5", "6");

也不可以进行add操作

六、第三方的工具类

很多第三方的集合工具类可以实现这个功能,如Guava等:

ImmutableList.of("a", "b", "c", "d");
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/489264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号