#16 Kotlinで学ぶ辞書型(マップ)の基本
Kotlinで名前と値の組み合わせを扱うには、MapというJavaと似た仕組みを、より簡潔な書き方で使えます。この記事では、Kotlinにおける辞書に相当する使い方と、安全な値の取り出し方を解説します。
Mapを作ってみる
val scores = mapOf("太郎" to 90, "次郎" to 85)
toという単語を使って、キーと値を組み合わせるのがKotlinらしい書き方です。mapOfは変更できないMapを作ります。
変更できるMap
val scores = mutableMapOf<String, Int>()
scores["太郎"] = 90
scores["次郎"] = 85
値を取り出す
val score = scores["太郎"]
存在しないキーを指定した場合、結果はnull許容型として返されます。既定値をあらかじめ決めておきたい場合はgetOrDefaultが便利です。
val score = scores.getOrDefault("三郎", 0)
キーの有無を確認する
if (scores.containsKey("太郎")) {
println("太郎さんのデータがあります")
}
全てのキーと値を順に処理する
for ((key, value) in scores) {
println("$key: $value")
}
scores.forEach { (key, value) -> println("$key: $value") }のように、forEachを使った書き方もできます。
Kotlinならではの注意点
以前の記事で触れたListとMutableListの関係と同じように、Kotlinでは変更できないMap(mapOf)と変更できるMutableMap(mutableMapOf)を使い分けます。基本は変更できないMapを使うのがKotlinらしい書き方です。関数にMapを渡す場合、受け取った側で誤って中身を書き換えられる心配がないため、バグを防ぎやすくなります。
Mapを加工する
すべての値に処理をしたい場合はmapValues、条件に合う要素だけ残したい場合はfilterが使えます。
val doubled = scores.mapValues { it.value * 2 }
val passed = scores.filter { it.value >= 80 }
まとめ
Kotlinの辞書はmapOf・mutableMapOfで作り、toを使ってキーと値を組み合わせます。getOrDefaultで安全に値を取り出し、mapValues・filterで柔軟に加工できることも覚えつつ、変更の要不要で使い分けましょう。
本ページはプロモーションを含みます。
参考書籍(PR)
Kotlinをもっと学びたい方には「やさしいKotlin入門」がおすすめです。
PR
コードを書かずに自動化したい方へ
「学んだけど自分の作業に組み込む時間がない」という方向けに、ダブルクリックで動く Windows専用の自動化ツールをオーダーメイドで作成しています。気になる方は こちらをご覧ください。
コメント
コメントを投稿