【问题标题】:How method .toArray(IntFunction<A[]> generator) knows the size of new Array [duplicate].toArray(IntFunction<A[]> generator) 方法如何知道新数组的大小 [重复]
【发布时间】:2017-05-01 16:51:00
【问题描述】:

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

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

我已经阅读了这个类的源代码3个小时,但我没有找到答案。

非常感谢!

【问题讨论】:

  • 你在哪里找 toArray() 源代码?
  • 流是调用 IntFunction 的流。它将要创建的数组的长度传递给 IntFunction。流知道它需要在数组中存储多少元素(如果不知道,它会多次调用 IntFunction 并连接所有数组)。

标签: java arrays java-8 java-stream


【解决方案1】:

Java 文档中说明了您的问题的答案。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    相关资源
    最近更新 更多