mapIn = ["HTC Magic":"Tetris.apk", "Motorola Droid Milestone":"TheSims3.apk", "Acer C6":"TheSims3.apk"]
mapOut = [:].withDefault { [] }
mapIn.each { k, v -> mapOut[v] << k }
mapOut
> [Tetris.apk:[HTC Magic], TheSims3.apk:[Motorola Droid Milestone, Acer C6]]
あなたはパターン虐待を気にしない場合は、inject
を使用することができます。
mapOut = mapIn.inject([:].withDefault {[]}) { m, k, v -> m[v] << k; m }
> [Tetris.apk:[HTC Magic], TheSims3.apk:[Motorola Droid Milestone, Acer C6]]
あなたが値を取得する方法気にしない場合は、groupEntriesBy
を使用することができます。
mapOut = mapIn.groupBy { it.value }
mapOut["TheSims3.apk"]*.key
> [Motorola Droid Milestone, Acer C6]
はあまりにマップその最初のものはありませんか? –
ご返信が遅れて申し訳ありませんが、休日の後に仕事に戻ってきました...あなたの解決策をチェックし、すぐに更新します – Techie