ScalaのMap型についてまとめています。
初期化
不変型のMapはscala.Predefに定義されているのでimportせずに利用可能です。
1
2
3
| val r = Map(1 -> "hoge")
// 不変型は追加できない
// r += (2 -> "fuga")
|
可変型は scala.collection.mutable.Map をimportしないと使えません。
1
2
3
4
5
| import scala.collection.mutable.Map
val r = Map.empty[Int, String]
r += (1 -> "hoge")
|
操作
Map型の変数にkey/valueを追加するには += を利用します。
1
2
3
4
5
6
7
8
| import scala.collection.mutable.Map
val r = Map.empty[Int, String]
r += (1 -> "hoge")
println(r)
r += (2 -> "fuga")
println(r)
|
1
2
| HashMap(1 -> hoge)
HashMap(1 -> hoge, 2 -> fuga)
|
Map型のkeyを指定してvalueの値を変更するには update を利用します。
1
2
3
4
5
6
7
| var r = Map.empty[Int, String]
r += (1 -> "hoge")
println(r)
r = r.updated(1, "fuga")
println(r)
|
1
2
| Map(1 -> hoge)
Map(1 -> fuga)
|
mutableの場合は下記のようになります。
1
2
3
4
5
6
7
8
| import scala.collection.mutable.Map
var r = Map.empty[Int, String]
r += (1 -> "hoge")
println(r)
r(1) = "fuga"
println(r)
|
1
2
| HashMap(1 -> hoge)
HashMap(1 -> fuga)
|
Mapのkeyのソート順で出力したい場合は sortBy 利用します。
1
2
| val r: Map[Int, String] = Map(3 -> "hoge", 1 -> "fuga", 2 -> "moge")
println(r.toSeq.sortBy(_._1))
|
1
| List((1,fuga), (2,moge), (3,hoge))
|