方法 .toArray(IntFunction<A[]> generator) 如何确定新数组的大小

4
我正在寻找一种方法来回答一个问题:方法.toArray(IntFunction<A[]> generator)如何知道新数组的大小。
实际上,我知道如何使用这个方法创建包含所有流元素的新数组(例如:String[]::new, Size -> new String[Size]),但在原始的Java代码中,我们可以看到IntFunction<A[]>生成器将给定函数应用于int参数。我的问题是,这个函数如何获得流的元素数量。
我已经阅读了这些类的源代码3个小时,但是我没有找到答案。

你在哪里寻找toArray()的源代码? - freedev
3
该流是调用IntFunction的那个。它将要创建的数组的长度传递给IntFunction。该流知道需要在数组中存储多少元素(如果不知道,则调用IntFunction多次并连接所有数组)。 - JB Nizet
1个回答

6
你的问题的答案在Java文档中有说明。

toArray函数使用提供的generator函数来分配返回的数组,以及可能需要用于分区执行或调整大小的其他数组。

generator函数接受一个整数,这是所需数组的大小,并生成所需大小的数组。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接