方法.toArray(IntFunction <A []>生成器)如何知道新数组的大小

Mar*_*tin 2 java arrays java-8 java-stream

我正在寻找一个问题的答案:方法.toArray(IntFunction generator)如何知道新数组的大小.

实际上我知道如何使用这个方法来创建包含所有stream元素的新数组(例如String[]::new, Size -> new String[Size]),但在原始的java代码中我们可以看到IntFunction<A[]>生成器将给定的函数应用于int参数.我的问题是这个函数如何获取流的元素数量.

我已经阅读了这个课程的源代码3个小时,但我找不到答案.

非常感谢!

Ous*_* D. 7

你的问题的答案在java docs中说明.

toArray使用提供的生成器函数来分配返回的数组,以及分区执行或调整大小可能需要的任何其他数组.

发生器函数接受一个整数,这是所希望的阵列的尺寸,并产生所希望的大小的阵列.