IT俱乐部 Java java11新特性之集合转换为数组的方法

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

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

Java11之前

使用toArray方法

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

List 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 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)

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

toArray方法的使用如下:

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

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

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

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/code/java/11849.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部