Groovy Tip 26 魔幻陣列 六

2021-04-20 12:03:45 字數 1953 閱讀 6315

groovy tip 26魔幻陣列

list

還有一些統計學上面的運算,也是我們可能要經常用到的。比如,將集合裡的元素求和、求集合裡的最大、最小元素等等。

比如我們有如下的乙個集合物件:

deflist = [1,

3,4,

5,6]

有些時候,我們希望把

list

裡所有元素相加起來,這時候,

groovy

語言為我們提供了「

sum」方法,示例**如下:

printlnlist.sum()

結果為:19

當然了,「

sum」方法要提供的功能不止是簡單的求和,而且還可以做更為複雜的求和。比如,我們有如下要求:先把集合裡為偶數的元素除以

2,再求和。那麼**就是如下的樣子:

printlnlist.sum

結果為:

14

求取集合的最大、最小元素的方法是「

max」和「

min」方法,還是以上面的

list

物件為例子。

printlnlist.max()

printlnlist.min()

執行結果為:6

1 同樣的,方法「

max」和「

min」也不是簡單意見上的求取最大、最小元素,當他們以閉包作為輸入引數以後,就可以做很多廣義上的求最大、最小元素了。

比如,我們現在希望把上面的

list

的每乙個元素求負以後再找出最大的元素:

printlnlist.max

結果為:1

當然了,上面的例子可能沒有太大的實際意義。下面,我們來看乙個有一點點實際意義的例子。比如我們有如下的乙個集合物件:

deflist1 = [

'hello'

,'wallace'

,'world'

,'armstrong']

我們希望找出字串長度最大的那個元素:

printlnlist1.max

結果為:

armstrong

最後,還有乙個集合類的運算方法需要提出來,這個方法比較難以理解一些,所以把它放在最後,作為我們整個《魔幻陣列》系列的結尾。這個方法就是「

inject

」方法。首先,我們還是來看乙個簡單的例子:

deflist2 = [1,

4,5,

7]printlnlist2.inject(0)

這個方法很不好理解,它的意思是輸入乙個值,如上面的「

0」到乙個迴圈的第一次迴圈中去,如上例中,將「

0」傳給「

count

」變數,然後將運算的結果,如「

count+it

」的結果傳遞給第二次迴圈,即傳遞給第二次迴圈的「

count

」變數,然後再運算「

count+it

」,再把結果傳遞給第三次迴圈,依此類推。

上面**的結果為:

17

上面的**等同於下面的**:

intcount= 0

list2.each

printlncount

可以看到,上面的**就比「

inject

」方法好理解多了,而且**量也沒有增加多少,可以預見,我們在

groovy

語言的使用過程中會很少使用到該方法。但是,我們仍然要學會這個方法,先不說在某些特殊情況下,這個方法會很好用。最要的是,當我們在閱讀一些開源**的時候,遇到這個方法不會迷惑。

Groovy Tip 26 魔幻陣列 六

groovy tip 26魔幻陣列 六 list還有一些統計學上面的運算,也是我們可能要經常用到的。比如,將集合裡的元素求和 求集合裡的最大 最小元素等等。比如我們有如下的乙個集合物件 deflist 1,3,4,5,6 有些時候,我們希望把list裡所有元素相加起來,這時候,groovy語言為我們...

Groovy Tip 25 魔幻陣列 五

groovy tip 25魔幻陣列 五 本系列前面章節曾談到過陣列來模擬數學集合的一些操作,比如 交集 並集 集合求差 和 集合反轉 等,都是集合的一些基本運算。但是,除此之外,還有一些集合的基本運算,如 屬於 子集 等以及與它們的相關運算,卻沒有提及,因此在本節來一一談到。首先說 屬於 運算,我們...

Groovy Tip 29 正規表示式 三

groovy tip 29 正規表示式 三 本篇主要來談談 捕獲組 和 非匹配組 以及與它們相關聯的一些概念。捕獲組 應該來說是乙個很重要的特性,特別是在進行文書處理的時候。比如,我們經常會遇到一些文字或數字跟一些符號混合在一起,而我們需要把這些文字或數字從這些符號中分離出來。這時候,我們就可以用到...