Java 11
接口中的新默认toArray
方法Collection
允许将集合的元素传输到所需运行时类型的新创建数组。它需要IntFunction<T[]> generator
作为参数,可作为:
String[] array = set.toArray(String[]::new);
已经有一种类似的方法Collection.toArray(T[])
,这种增加意味着我们不再能够通过null
作为参数,因为在这种情况下,对该方法的引用将是模棱两可的。但这仍然可以,因为无论如何这两种方法都会抛出NPE。
Java 8
在Java 8中,我们可以使用流API:
String[] array = set.stream().toArray(String[]::new);
我们还可以使用toArray()的重载版本,其形式IntFunction<A[]> generator
如下:
String[] array = set.stream().toArray(n -> new String[n]);
这里生成器函数的目的是获取整数(所需数组的大小)并生成所需大小的数组。我个人更喜欢使用方法引用的前一种方法,而不是使用lambda表达式的后一种方法。
toArray()
Javadoc中明确提到的方法。