当前位置: 首页 > 知识库问答 >
问题:

顺序分隔符上的estimateSize()

司寇光华
2023-03-14

我正在实现一个Spliterator,它通过让trySplit()返回null来显式限制并行化。实现估计大小()会为此拆分器生成的流提供任何性能改进吗?还是估计大小仅对并行化有用?

编辑:为了澄清,我特别询问估计的大小。换句话说,我的分路器没有SIZE特征。

共有2个答案

浦德明
2023-03-14

拆分器可以遍历元素:

1.单独(tryAdvance())

散装2.Sequentially

根据java文档估计大小()在拆分过程中很方便。

分裂器可以通过估计大小()方法提供剩余元素数量的估计。理想情况下,正如特征SIZED所反映的那样,该值恰好对应于成功遍历中遇到的元素数量。然而,即使不完全知道,估计值值对于在源上执行的操作仍然有用,例如帮助确定是进一步拆分还是按顺序遍历剩余元素更可取。

由于您的spliterator没有大小特征,< code>estimateSize将不会提供任何性能(因为没有并行性),但是请记住,< code>estimateSize的Java-docs没有提到任何并行性,它只声明:

返回:估计的大小,或 Long.MAX_VALUE(如果无穷大、未知或计算成本太高)。

辛意智
2023-03-14

查看相关拆分器特征的调用层次结构,发现它至少与 stream.toArray() 性能相关。

此外,内部流实现中有一个等效的标志,似乎用于排序:

因此,除了并行流操作之外,大小估计似乎还用于这两个操作。

我不要求我的搜索详尽无遗,所以只拿这些作为例子。

没有大小特征,我只能找到与流管道的并行执行相关的对< code>estimateSize()的调用。

当然,这在将来可能会改变,或者标准JDK之外的另一个流实现可能会有所不同。

 类似资料:
  • 问题内容: 我有以下格式的数据: 现在,我尝试根据最后一个字段对文件进行递减排序。我尝试了以下命令,但是没有按照我们的预期排序。 什么是正确的方法? 这是样本数据。 问题答案: 使用 bash ,可以达到目的: 注意单引号字符串前面的美元符号。您可以在 bash 手册页 的ANSI- C报价部分中 阅读有关它的内容。

  • 有没有办法在gridview中显示行之间的(水平)分隔线? 我试着在每个网格项目下面放置一个小的分隔线,但是这不是一个解决方案,因为当一行没有完全填满项目时,它不会跨越整行。 有没有办法在每一行之间添加一个图像?我只能找到改变行之间空间的方法。

  • 问题内容: 我经常看到人们在使用定界符。我试图找出什么是分隔符,以及它们的目的是什么。谷歌搜索20分钟后,我找不到能满足我要求的答案。所以,我现在的问题是:什么是分隔符,何时应使用它们? 问题答案: 在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止。这样,当代码

  • 问题内容: 我有以下字符串: 我“肯定”想“上学”。 现在,我想在省略号处分割此字符串,即我想获得以下输出: 我会 一定 喜欢 上学 。 问题答案: 如果您是用引号()代替省略号,最简单的解决方案是使用 :

  • 我想显示一个项目列表,并使用“.” 我对此进行了研究,发现RecyclerView有一个内置的ItemDecoration功能。然而,我只能找到如何画一条线: 从我所看到的,您必须为此使用可绘制的,并且隐藏最后一个分隔符仍然不是很方便。 我发现的另一个选项是在RecyclerView的适配器内创建异构布局:https://guides.codepath.com/android/Heterogeno

  • 问题内容: 对于在字符串中 最后一次 出现定界符时拆分字符串的建议Python惯用法是什么?例: 接受第二个参数,即要分割的分隔符的出现。像常规列表索引一样,表示末尾的末尾。如何才能做到这一点? 问题答案: 使用 或代替: 可让您指定分割次数,而仅分割一次,但总是返回固定数量的元素(前缀,定界符和后缀),并且对于单个分割情况而言更快。 演示: 两种方法都从字符串的右侧开始拆分;通过将最大值作为第二