问题标签 [mapmulti]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1426 浏览

java - 何时以及如何在 flatMap 上执行 1 到 0..n 映射 Stream mapMulti

我一直在浏览最新的 LTE Java 17 版本的新闻和源代码,并且遇到了名为mapMulti. 早期访问JavaDoc说它类似于flatMap.

  • 如何使用此方法执行 1 到 0..n 映射?
  • 新方法如何工作以及它与flatMap. 每个人什么时候更可取?
  • mapper可以调用多少次?
0 投票
1 回答
33 浏览

java - 理解 mapMulti 的问题

在谈到 Java 时,我是公平的,我决定深入研究 API 的实现和使用,尤其是 Stream API。

在认为我做对了之后,我做了一个实现,并且它奏效了。然而,我意识到了一些让我烦恼的事情。

mapMulti 函数接受参数 a BiConsumer

然后我想通过将我的 Element 类的接受函数传递给 mapMulti 函数来对它进行基准测试(这就是为什么我丢弃 的值s,而 ExecutionPlan 只是具有与 JMH 进行基准测试的值

这是 Element 类,它简单地将 int 分解为素数,并在消费者上调用 forEach。

我的问题是:为什么我的 Element::accept (理论上是mapperarg)在不是 BiConsumer 类型时被认为是有效的,并且只接受一个参数,即使在 mapMulti 内部调用它时,它也接受元素和缓冲区争论。

我可能完全遗漏了一些明显的东西或对这些功能有错误的理解,但我在理解BiConsumer, Consumer, Functions, BiFunctions等方面遇到了一些麻烦。

在此先感谢,我希望我能理解我觉得非常有趣的这类主题,尤其是所有这些 API 的开发方式。