Scala Map型

in  

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))

Share