加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy中的Inject方法是什么?

发布时间:2020-12-14 16:39:14 所属栏目:大数据 来源:网络整理
导读:Groovy中的inject方法实际上做了什么?我google了,它没有找到确切的答案。任何人都可以用一个简单的例子指定它的用法? 解决方法 它对集合应用操作,并跟踪中间值。以这个例子:[1,2,3,4] .inject(0,{sum,value – sum value})。这说明使用0作为初始值,
Groovy中的inject方法实际上做了什么?我google了,它没有找到确切的答案。任何人都可以用一个简单的例子指定它的用法?

解决方法

它对集合应用操作,并跟踪中间值。以这个例子:[1,2,3,4] .inject(0,{sum,value – > sum value})。这说明使用0作为初始值,并对中间结果和每个元素按顺序应用加法运算。该操作的每个应用产生新的中间结果。在这种情况下,闭包将数字相加,从而生成列表的和。你可以想象它:

<initial value> <operation> <element1> <operation> ... <elementn>

或者,在[1,4] .inject(0,{sum,value – >和值})的情况下:

0 + 1 + 2 + 3 + 4

要查找列表的产品,可以使用[1,2,3,4] .inject(1,{product,value – > product * value})。在这种情况下,1用作初始值,因为它是多任务的标识值。

这里有一个例子,将多字词串列表分成一个单词列表:

strings = ["","this","is a","test of inject!"]
words = strings.inject([],{ list,value -> list + value.tokenize() })
assert words == ["this","is","a","test","of","inject!"]

有时用于描述此操作的其他术语是“reduce”,如MapReduce中所示,或“折叠”(具体为foldl)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读