欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java11新特性之集合转换为数组的方法,

来源: javaer 分享于  点击 373 次 点评:135

java11新特性之集合转换为数组的方法,


目录
  • Java11之前
    • 使用toArray方法
    • 使用流(Streams)API
  • Java11

    Java11引入了一种将带有泛型的集合转换为带有泛型的数组的简单方法。

    Java11之前

    使用toArray方法

    对于List,你可以直接使用toArray方法,但需要注意,toArray方法默认返回一个Object[]数组,你可能需要将其强制转换为正确的类型。

    List<String> list = Arrays.asList("a", "b", "c");
    Object[] strObjectArray = list.toArray();

    这样转出来的数组是Object类型,在使用的时候还需要进行强制类型转换。

    在Java 11及之前,推荐使用这种方式来避免不必要的数组复制:

    String[] array = list.toArray(new String[0]);

    在Java 11之前,你可能会看到这样的代码:

    String[] array = list.toArray(new String[list.size()]);

    这种方式在Java 11之前也是有效的,但可能导致不必要的数组复制

    但从Java 9开始,推荐使用new Type[0]作为toArray方法的参数,因为它可以避免在集合大小已知时的不必要数组创建和复制。

    使用流(Streams)API

    虽然这不是最直接的方法,但你可以使用流来转换集合为数组。这通常在需要更复杂的转换时更有用。

    List<String> list = Arrays.asList("a", "b", "c");  
    String[] array = list.stream().toArray(String[]::new);

    在这个例子中,我们使用stream().toArray()方法,并传递一个构造函数引用(String[]::new)来指定数组的类型。这将返回一个正确类型的数组。

    Java11

    Java 11中,toArray方法可以传入IntFunction参数。这种方式允许你更灵活地创建数组。

    toArray方法的原型如下:
    java.util.Collection#toArray(java.util.function.IntFunction<T[]>)

    default <T> T[] toArray(IntFunction<T[]> generator) {
        return toArray(generator.apply(0));
    }

    toArray方法的使用如下:

    List<String> list = Arrays.asList("a", "b", "c");
    String[] array = list.toArray(String[]::new);

    这种方式使用方法引用String[]::new,简洁且高效。

    到此这篇关于java11新特性之集合转换为数组的文章就介绍到这了,更多相关java11集合转换为数组内容请搜索3672js教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持3672js教程!

    您可能感兴趣的文章:
    • java逗号分隔String字符串及数组、集合相互转换
    • Java数组转换为集合的相关方法
    • Java中数组与集合的相互转换实现解析
    • Java集合与数组区别简介及相互转换实例
    相关栏目:

    用户点评