在 「 Java11 」 Java 11 新特性 - 字符串新方法 我们介绍了 Java 11 中字符串的新方法,本章节我们就来看看 Java 11 中为集合新添加的默认方法 toArray()
在 JDK11 早期访问 发布说明 中提到, JDK 11
的 Early Access Build 20
版本中在 Collection
接口上添加了一个 默认方法 toArray(IntFunction)
关于默认方法,看这篇文章 https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html 非常有意思的实现方式
该 toArray()
方法的功能说明是 「允许在运行时将集合的元素转换到新创建的所需类型的数组中」,很拗口对不对,其实就一句话 「可以将集合的元素转换为数组」
这个新的默认方法 Collection.toArray(IntFunction) 的行为类似于 流接口 上的 Stream.toArray(IntFunction) 方法
原型
default <T> T[] toArray(IntFunction<T[]> generator)
范例
我们使用一个示例来演示下 toArray()
,我们首先创建一个 Set
,然后调用 Set.toArray()
方法
jshell> Set<String> names = Set.of("苹果", "香蕉", "菠萝", "梨"); names ==> [香蕉, 菠萝, 苹果, 梨] jshell> Arrays.toString(names.toArray(String[]::new)) $20 ==> "[香蕉, 菠萝, 苹果, 梨]"
如果不传递 String[]::new
类型构造参数,其实就会调用已经存在的 Collection.toArray(T[])
toArray()
jshell> Arrays.toString(names.toArray()) $21 ==> "[香蕉, 菠萝, 苹果, 梨]"
目前尚无回复