1. ホーム
  2. groovy

[解決済み] groovyのfindResultsとcollectの違いは何ですか?

2022-02-18 09:48:10

質問

以下は、collectを使用したコードです。

​def lst = [1,2,3,4];      
def newlst = [];       
newlst = lst.collect {element -> return element * element}       
println(newlst);

以下は、findResultsを使ったコードです。

def lst2 = [1,2,3,4];      
def newlst2 = [];       
newlst2 = lst2.findResults {element -> return element * element}       
println(newlst2);

どちらも[1, 4, 9, 16]を返すようですが、何が違うのでしょうか?ありがとうございます。

解決方法は?

基本的には、その違いは null

collect を見たとき null はそれを回収し、一方 findResults は選ばない。

つまり,コレクションは collect .

もちろん、結果をフィルタリングすることも可能ですが、その場合は追加の手順が必要です。

以下は リンク インターネット上で見つけた例へ

​def list = [1, 2, 3, 4]
println list.coll​​​​​​​​​​​​​​ect { it % 2 ? it : null}
// [1, null, 3, null] 
println list.findResults { it % 2 ? it : null}​
// [1,3]