2017-07-25 16 views
1

これはかなり簡単なことですが、これを理解することはできません。私はそれにいくつかのオブジェクトとグルーヴィーなリストを持っているように:groovyをグループを使ってマップに変換する最大値

def listOfTings = [ 
    ["type": "A", "value": 1], 
    ["type": "B", "value": 3], 
    ["type": "A", "value": 2], 
    ["type": "B", "value": 2] 
] 

と私はGROUPBY(タイプ)最大(値)のようにそこからマップを取得したい:

["A": 2, "B": 3] 

しかし、私はできませんgroupByメソッドを見つけてください。私はcollectEntriesを使ってそれを理解していません。そのような結果を達成するための標準的な方法はありますか?

答えて

0

試行次

[A:[[タイプ:A、値:1]、[タイプ

listOfTings.groupBy { it.type }.collectEntries { [(it.key): it.value.max { it.value }.value] } 

まずgroupBytypeフィールドでグループ化されたリストのマップを作成します。値:2]、B:[タイプ:B、値:3]、[TYPE:B、値:2]]]

次に、collectEntriesit.value.max { it.value }とは、単一の選択されますit.value.max { it.value }.valuevalueのみ抽出するピッキング

[3] A:[TYPE:A、値:2]、B:[TYPE:B、値]最大valueフィールドを有するエントリ代わりに、全体のエントリのvalueフィールド:

[A:2、B:3]

ホープ私助けてください:)

関連する問題