jjzjj

Spliterator

全部标签

java - Spliterator 什么时候应该停止 split ?

我明白thereisoverheadinsettingup并行Stream的处理,如果项目很少或每个项目的处理速度很快,则单线程中的处理速度更快。但是,trySplit()是否有类似的阈值?,将问题分解成更小的block会适得其反吗?我正在类比最小块的合并排序切换到插入排序。如果是这样,阈值是否取决于trySplit()和consuming的相对成本tryAdvance()过程中的项目?考虑一个比推进数组索引复杂得多的拆分操作——例如,拆分一个按词法排序的多集排列。是否有约定让客户在创建并行流时指定拆分的下限,具体取决于消费者的复杂性?Spliterator可以用来估计下限本身的启发式

java - 类从类型 java.util.Set 和 java.util.List 继承 spliterator() 的无关默认值

我有实现Set和List的类。程序在Java6和Java7中运行良好publicclassSetListimplementsSet,List{....}在Java8中,这不会编译。错误是java:classtrials.SetListinheritsunrelateddefaultsforspliterator()fromtypesjava.util.Setandjava.util.Listjava/util/Set.java:394...@OverridedefaultSpliteratorspliterator(){returnSpliterators.spliterator(th

java - stream.spliterator() 是否关闭流?

stream.spliterator()是否隐式关闭了stream,还是之后需要显式关闭它?Streamstream=Stream.of("a","b","c");Spliteratorspliterator=stream.spliterator();//Somelowleveroperationwiththespliteratorstream.close();//doweneedtoclose?乍一看,.spliterator()方法似乎关闭了stream,但没有调用stream.close()。至少如果我在调用.spliterator()方法后立即关闭它,它似乎不会影响splite

java - Java 8 中 Spliterator 的一个好的用例场景是什么?

Spliterator的一个好的用例场景是什么?Java8中的类? 最佳答案 通常,应用程序开发人员不会直接使用SpliteratorAPI。但是,如果您提供API,并实现自己的类集合类,则可以实现Spliterator以使您的集合适应StreamAPI。这支持函数式方法、并行处理和其他功能。例如,我编写了一个实用程序来枚举网络中的IP地址,由CIDR表示法指定。这不是一个真正的集合。也就是说,它不会一次携带内存中所有地址的列表,只有网络号和网络掩码。但是通过暴露一个Spliterator,它可以很容易地适应一个Stream。(每个

java - Java 8 中 Spliterator 的一个好的用例场景是什么?

Spliterator的一个好的用例场景是什么?Java8中的类? 最佳答案 通常,应用程序开发人员不会直接使用SpliteratorAPI。但是,如果您提供API,并实现自己的类集合类,则可以实现Spliterator以使您的集合适应StreamAPI。这支持函数式方法、并行处理和其他功能。例如,我编写了一个实用程序来枚举网络中的IP地址,由CIDR表示法指定。这不是一个真正的集合。也就是说,它不会一次携带内存中所有地址的列表,只有网络号和网络掩码。但是通过暴露一个Spliterator,它可以很容易地适应一个Stream。(每个

java - 如何创建通用分页拆分器?

我希望能够处理从必须在页面中访问的源读取的java流。作为第一种方法,我实现了一个分页迭代器,它仅在当前页面用完项目时请求页面,然后使用StreamSupport.stream(iterator,false)获取迭代器上的流句柄。由于我发现我的页面获取起来非常昂贵,因此我想通过并行流来访问页面。在这一点上,我发现由于java直接从迭代器提供的拆分器实现,我的幼稚方法提供的并行性是不存在的。因为我实际上对我想遍历的元素了解很多(我知道请求第一页后的总结果数,并且源支持偏移量和限制)我认为应该可以实现我自己的拆分器来实现真正的并发(在页面元素上完成的工作和页面查询中)。我已经能够很容易地实

java - 如何创建通用分页拆分器?

我希望能够处理从必须在页面中访问的源读取的java流。作为第一种方法,我实现了一个分页迭代器,它仅在当前页面用完项目时请求页面,然后使用StreamSupport.stream(iterator,false)获取迭代器上的流句柄。由于我发现我的页面获取起来非常昂贵,因此我想通过并行流来访问页面。在这一点上,我发现由于java直接从迭代器提供的拆分器实现,我的幼稚方法提供的并行性是不存在的。因为我实际上对我想遍历的元素了解很多(我知道请求第一页后的总结果数,并且源支持偏移量和限制)我认为应该可以实现我自己的拆分器来实现真正的并发(在页面元素上完成的工作和页面查询中)。我已经能够很容易地实

java - 如何在 Iterable 上执行 Stream 函数?

这个问题在这里已经有了答案:WhydoesIterablenotprovidestream()andparallelStream()methods?(3个回答)关闭8年前。在Java8中,Stream类没有任何方法来包装Iterable。相反,我从Iterable获取Spliterator,然后像这样从StreamSupport获取Stream:booleanparallel=true;StreamSupport.stream(spliterator(),parallel).filter(Row::isEmpty).collect(Collectors.toList()).forEac

java - 如何在 Iterable 上执行 Stream 函数?

这个问题在这里已经有了答案:WhydoesIterablenotprovidestream()andparallelStream()methods?(3个回答)关闭8年前。在Java8中,Stream类没有任何方法来包装Iterable。相反,我从Iterable获取Spliterator,然后像这样从StreamSupport获取Stream:booleanparallel=true;StreamSupport.stream(spliterator(),parallel).filter(Row::isEmpty).collect(Collectors.toList()).forEac

java - Spliterator - 大小旗帜与小型旗帜

https://docs.oracle.com/javase/8/docs/api/java/util/Spliterator.htmlSIZEDCharacteristicvaluesignifyingthatthevaluereturnedfromestimateSize()priortotraversalorsplittingrepresentsafinitesizethat,intheabsenceofstructuralsourcemodification,representsanexactcountofthenumberofelementsthatwouldbeencoun