Groovy > マップ(連想配列)の使い方

更新日 2012-08-15
広告
Groovyでは、JavaScriptのリテラル表記っぽく、マップを定義できます。
def map = ['name':'taro', 'age':15]
println map.size()
println map.get('name')
println map['age']
println map.containsKey('name') // true
println map.containsValue(15) // true
これの実行結果は以下のようになります。
2
taro
15
true
true

put/remove

putを使うとkey-valueペアを追加できます。removeを使うとkey-valueペアを削除できます。
def map = ['name':'taro', 'age':15]
map.put('weight', 60) // 追加
println map
map.remove('name') // 削除
println map
これの実行結果は以下のようになります。
[name:taro, age:15, weight:60]
[age:15, weight:60]

each

eachを使うと、各 key-value ペアに対して、クロージャを適用できます。クロージャの適用の方法はリストの場合と似ています。
def map = ['name':'taro', 'age':15]
map.each { key, value ->
  println "key = ${key}, value = ${value}"
}
キーをkeyに、バリューを変数valueに代入して、クロージャを適用します。実行結果は以下のようになります。
key = name, value = taro
key = age, value = 15

sort

ソートする方法を紹介します。
def map = [5:'e', 2:'b', 3:'c']
println map.sort() // キーで昇順ソート
println map.sort{ kv1, kv2 -> return kv2.key - kv1.key } // キーで降順ソート
2行目のように、単に sort メソッドを呼んだ場合、キーで昇順ソートされます。 3行目のようにクロージャを呼ぶ場合は、2つの引数がクロージャに渡されます。それぞれの引数は、マップのkey-valueペアです。 実行結果は以下のとおりです。
[2:b, 3:c, 5:e]
[5:e, 3:c, 2:b]
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system