spliterator相关内容

了解 Java 8 和 Java 9 中的顺序与并行流拆分器

一个乍一看并不简单的关于拆分器的问题. 在流中,.parallel() 改变流处理的行为.但是,我期望从顺序流和并行流创建的拆分器是相同的.例如,通常在顺序流中,从不调用 .trySplit(),而在并行流中,它是为了将拆分拆分器移交给另一个线程. stream.spliterator() 与 stream.parallel().spliterator() 的区别: 他们可能有不 ..
发布时间:2022-01-22 10:40:14 Java开发

为什么要在 Java Stream 接口中重载 varargs 方法 of()?

流 接口对方法 of() 有两个重载.其中一个是可变参数方法,而另一个采用单个参数. 与将一个参数传递给可变参数方法相比,单参数方法是一种性能优化吗?如果是这样,它如何提高性能?可以对 empty() 方法提出相同的问题,这似乎是可变参数 of() 周围的语法糖. 我发现这些方法的实现方式不同,区别显然在于 Spliterator 的实例化方式;但这对 Stream API 有什么好处 ..

深入了解分裂器特征

为了尝试深入理解java流和拆分器,我有一些关于拆分器特性的微妙问题: Q1:Stream.empty() vs Stream.of()(Stream.of() 不带参数) Stream.empty(): SUBSIZED, SIZED Stream.of():SUBSIZED、IMMUTABLE、SIZED、ORDERED 为什么Stream.empty()没有Stream. ..
发布时间:2022-01-22 10:03:13 Java开发

Java8中迭代器和拆分器的区别

我在研究Parallelism 是Spliterator 的主要优势时了解到. 这可能是一个基本问题,但谁能解释一下 Iterator 和 Spliterator 之间的主要区别并举一些例子吗? 解决方案 对我来说,这些名称几乎是不言自明的.Spliterator == Splittable Iterator :它可以拆分一些源,它也可以迭代它.它与 Iterator 的功能大致相同 ..
发布时间:2022-01-10 14:40:16 其他开发

Java8中Iterator和Spliterator的区别

我在学习时了解到Parallelism是Spliterator的主要优势. 这可能是一个基本问题,但谁能解释一下 Iterator 和 Spliterator 之间的主要区别并举例说明? 解决方案 对我来说,这些名称几乎一目了然.Spliterator == Splittable Iterator :它可以拆分一些源,也可以迭代它.它具有与 Iterator 大致相同的功能,但有一个 ..
发布时间:2021-12-30 21:18:22 其他开发

深入了解分离器特性

为了深入理解java流和spliterator,我对spliterator特性有一些微妙的疑问: Q1:Stream.empty() vs Stream.of()(Stream.of() 不带参数) Stream.empty(): SUBSIZED, SIZED Stream.of():SUBSIZED、IMMUTABLE、SIZED、ORDERED 为什么 Stream.em ..
发布时间:2021-12-28 08:55:59 Java开发

从数组中创建高效的Java 8排序Spliterator

在Java 8中,各种方便的实用工具用于从数组构建高效的Spliterator。但是,没有提供工厂方法来构建带有比较器的Spliterator。显然,Spliterators可以附加比较器;他们有 getComparator() 方法和 SORTED 属性。 图书馆作者如何构建 SORTED Spliterators? 解决方案 似乎没有预见到这样的 Spliterator ,订单不 ..
发布时间:2019-01-14 12:17:09 Java开发

在Java 8的Spliterator中使用的奇怪循环

有人知道为什么 java.util.Spliterator 实现使用do-while而不是while循环,当循环体为空时?例如, forEachRemaining 的实现是: default void forEachRemaining(消费者行动){ do {} while(tryAdvance(action)); } 为什么要使用 do {} ..
发布时间:2019-01-14 12:07:04 Java开发

在Spliterator的.tryAdance()实现中,是否存在使用.accept()多个元素的危险?

Spliterator 的javadoc提到: Spliterator可以遍历元素单独(tryAdvance())或顺序(forEachRemaining())。 然后我们转到 javadoc tryAdvance() 那个: 如果剩下的元素存在,则对它执行给定的操作,返回true;否则返回false。 也许我在某处误读,但对我来说似乎只要有一个元素,或更多,剩下的, Co ..
发布时间:2019-01-14 12:06:07 Java开发

不可分裂的分裂器

我正在尝试了解 Spliterator 的工作方式,以及如何设计分裂器。我认识到 trySplit()可能是 Spliterator 的一个更重要的方法,但当我看到第三个 - 派对 Spliterator 实现,有时我看到他们的分裂器无条件地为 trySplit()返回null。 问题: 普通迭代器和之间是否存在差异? Spliterator 无条件地返回null?看起来这样的分裂者会 ..
发布时间:2019-01-14 11:55:07 Java开发

了解Java 8和Java 9中的顺序流和并行流分裂器

关于分裂者的问题乍一看并不简单。 在溪流中, .parallel()更改流处理的行为。但是我期望顺序和并行流创建的分裂器是相同的。例如,顺序流中的通常不会调用 .trySplit() ,而在并行流中,它是为了移交将spliterator拆分为另一个线程。 stream.spliterator() vs stream之间的差异。 parallel()。spliterator(): ..
发布时间:2019-01-14 11:37:30 Java开发

如何限制Stream按顺序运行,并阻止它并行运行?

我有一个方法可以返回从自定义spliterator生成的流;分裂器不是安全的。由于分裂器不是踏板安全的,并且它保持状态,我想防止它并行运行。有没有办法阻止返回的流并行运行? 我无法找到任何执行此操作的文档或示例。我确实在 BaseStream 类上找到了 sequential()方法,但这似乎并不能阻止用户调用 parallel()来获取并行流。 解决方案 并行流调用 trySpli ..
发布时间:2019-01-02 15:36:19 Java开发

Stream.spliterator对并行流的奇怪行为

我正在使用流分裂器直接进行我正在编写的库中的低级操作。最近,当我使用流分裂器并交错 tryAdvance / trySplit 调用时,我发现了非常奇怪的行为。这是一个演示问题的简单代码: import java.util.Arrays; import java.util.Spliterator; 公共类SpliteratorBug { public static void m ..
发布时间:2019-01-02 13:54:36 Java开发

了解Java 8中的Spliterator,Collector和Stream

我无法理解 信息流Java 8中的 接口,特别是与 Spliterator 和 收集器 接口。我的问题是我根本无法理解 Spliterator 和收集器接口,因此 Stream 界面对我来说仍然有些模糊。 Spliterator究竟是什么和收藏家,我该如何使用它们?如果我愿意写自己的 Spliterator 或收藏家(可能还有我自己的 Stream 在那个过程中),我应该做什么而不是做什么? ..
发布时间:2018-12-10 11:25:55 Java开发

为什么在Java Stream接口中重载()的varargs方法?

Stream 接口对于方法 of()有两个重载。其中一个是变量arity方法,而另一个是一个参数。 单参数方法是一个性能优化而不是将一个参数传递给变量arity方法?如果是这样,它如何提高性能?可以询问 empty()方法的相同问题,这似乎是围绕变量arity of()。 我看到这些方法的实现有所不同,显然差别在于 Spliterator 被实例化;但这对 Stream API有什么好 ..