我是靠谱客的博主 花痴摩托,最近开发中收集的这篇文章主要介绍具有Java 8流的Groovier Groovy,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Consider writing Groovy code to retrieve the transformed version of an element from a given collection such that transformed version of the element satisfies a given predicate.

这是仅使用Groovy的代码段,仅使用Groovy的功能。

(0..N).collect { e -> transform(e) }
      .findResult([]) { e -> predicate(e) ? e : null }

这是一个使用Java 8流的Groovy + Java代码段。

IntStream.range(0, N)
         .mapToObj { e -> transform(e) }
         .filter { e -> predicate(e) }
         .findAny()
         .orElse([])

当第一个代码段转换时(收藏) every element in the source 收藏ion before executing findResult (staged execution), the second snippet executes the entire pipeline of functions for every element in the source 收藏ion. Consequently, the Groovy+Java snippet is more efficient as it stops transforming the elements as soon as the transformed version of an element is found.

In terms of parallelism, here’s the Groovy-only snippet parallelized using GPars.

GParsPool.withPool {
    (0..N).collectParallel { e -> transform(e) }
          .findResult([]) { e -> predicate(e) ? e : null }
}

而收藏被并行化收藏Parallel),由于GPar不支持findResult不并行化。 此外,即使findResult被并行化,它将仅在之后执行收藏Parallel完成,因此,由于分阶段执行而导致的上述观察到的效率低下将仍然存在。

相比之下,这是Groovy + Java片段的并行版本。

IntStream.range(0, N)
         .parallel().
         .mapToObj { e -> transform(e) }
         .filter { e -> predicate(e) }
         .findAny()
         .orElse([])

与仅使用Groovy的并行代码段不同,流水线中的每个函数在其输入可用时都并行执行。 因此,这将比并行的仅Groovy的代码段更有效。

几年前,Groovy使Java成为groovier。 借助Java 8流,我认为Java可以使Groovy变得更时髦。

也就是说,我很渴望看到Groovy将如何发展成为Java groovier。

from: https://dev.to//rvprasad/groovier-groovy-with-java-8-streams-9l7

最后

以上就是花痴摩托为你收集整理的具有Java 8流的Groovier Groovy的全部内容,希望文章能够帮你解决具有Java 8流的Groovier Groovy所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部