当前位置: 首页 > 面试题库 >

Java 8中的顺序流在调用collect时是否使用Combiner参数?

秦斌
2023-03-14
问题内容

如果我在顺序流上调用collect(例如,从调用Collection.stream()中调用),那么它将使用我传递来进行收集的combiner参数吗?我认为不是,但在文档中什么也看不到。如果我是正确的,那么似乎不得不提供我知道不会使用的东西(如果我知道它是顺序流),这似乎是不幸的。


问题答案:

请记住要根据接口规范进行开发-而不要针对实现进行开发。下一Java版本可能会更改实现,而规范应保持稳定。

该规范没有区分顺序流和并行流。因此,您应该假定可以使用 组合器 。实际上,有很好的示例显示顺序流的 组合器 可以提高性能。例如,以下
reduce 操作将字符串列表连接起来。在不使用 合并器 的情况下执行代码具有二次复杂性。使用 组合器 的智能执行可以减少运行时间。

List<String> tokens = ...;
String result = tokens.stream().reduce("", String::concat, String::concat);


 类似资料:
  • 如果我在序列流上调用collect(例如从调用Collection.stream()),那么它会使用我传递给collect的合并器参数吗?我想没有,但我在文件中什么也没看到。如果我是正确的,那么很遗憾必须提供一些我知道不会使用的东西(如果我知道它是一个顺序流)。

  • 我正在从文件中读取值并获取列表。如下- 一旦我得到这个

  • 是否有任何保证在顺序和有序流上的操作是按遇到顺序处理的? 我是说,如果我有这样的代码: 是否可以保证它将按照生成范围的遇到顺序执行myFunction()调用? 我找到了Stream类的JavaDocs草案,它明确地说明了以下内容: 对于顺序流管道,如果管道源具有已定义的遇到顺序,则所有操作都按照管道源的遇到顺序执行。 但是它没有提到顺序流,这个例子是针对并行流的(我的理解是,顺序流和并行流都是正

  • 我是学习Spring的新手。我能找到的资源不多,无法解释当我们在Spring遇到安全API时会发生什么的事件顺序。 考虑以下场景: 我想让用户通过点击 /authenticateendpoint来登录。 在这种情况下,我可以看到涉及到几个不同的类: 1)WebSecurityConfigAdapter(允许我们指定安全性以及哪些角色可以访问特定endpoint) 2)OncePerRequest

  • 阅读akka-stream的留档,我不太清楚消息的顺序以及是否可以强制执行。让我用我为聊天服务器编写的一小段代码来设置我的问题的上下文。 为了让事情变得简单,我使用了这个流的形状和一个非常简单的源和汇。像这样的-- 现在,我的担忧来了。终端中打印的事件顺序根本不正常。我不知道该怎么解决。这是我得到的结果-- 输出中缺少第一条消息。消息似乎是在打印之前发送的。 我尝试通过使用(我在上面的代码中对此进

  • 我想把这个列表收集到两张地图中(如果可能的话,也可以在一张地图中) 一个映射应该将映射到用户玩过的游戏数量--基本上是具有状态的游戏 另一个映射应该将存储到所有游戏计数。它看起来像这样 有没有一种方法可以在块内实现,而不是使用?