コレクション内のアイテムの合計の計算
コレクション内のアイテムの合計を確認するには、引数なしでsum()関数をコールします。 これは、プラス演算子をサポートするアイテムに対して機能します。
たとえば、次のような数値のリストを合計して、結果1259.13を生成できます:
def salaries = [123.45, 678.90, 456.78]
// Compute the sum of the list of salaries
def total = salaries.sum()
ただし、文字列はプラス演算子もサポートしているため、結果
VincentvanGogh
を生成するために次の操作も正しく機能しない可能性があります:def names = ['Vincent','van','Gogh']
def sumOfNames = names.sum()
特定の条件に基づいてコレクション内のアイテムのサブセットの合計を検索する必要がある場合は、最初に
findAll()
をコールして検討するサブセットを特定し、次に合計する値をcollect()
してから、そのコレクションでsum()
をコールします。 たとえば、100を超えるアクセス権を持つすべてのユーザーのすべてのアクセスの合計を検索するには、次のようにして合計2154をコンピュートします: def users = [
'smuench':[name:'Steve', badge:'A123', accesses: 1001],
'sburns':[name:'Steve', badge:'C789', accesses: 52],
'qbronson':[name:'Quello', badge:'Z231', accesses: 152],
'jevans':[name:'Joe', badge:'B456', accesses: 1001]
]
// Compute sum of all user accesses for users having more than 100 accesses
def total = users.findAll{ it.value.accesses > 100 }
.collect{ it.value.accesses }
.sum()