Top > Scala > Map


コマンドプロンプトで試した結果です。
ScalaのMap=Hashですね。


色々やってみます


◆まずはMapの変数を作成
scala> var acha = Map( 1 -> "boo", 2 -> "fuu" )
acha: scala.collection.immutable.Map[Int,String] = Map(1 -> boo, 2 -> fuu)

◆Mapの内容を追加
scala> acha + (3 -> "woo")
res__: scala.collection.immutable.Map[Int,String] = Map(1 -> boo, 2 -> fuu, 3 -> woo)

scala> acha
res__: scala.collection.immutable.Map[Int,String] = Map(1 -> boo, 2 -> fuu)

◆イミュータブルなので、変数に再割当てしないと更新されません
scala> acha += (3 -> "woo")

scala> acha
res__: scala.collection.immutable.Map[Int,String] = Map(1 -> boo, 2 -> fuu, 3 -> woo)

◆Map同士を結合、更新(++)
scala> var porute = Map( 1 -> "poo", 4 -> "puu")
porute: scala.collection.immutable.Map[Int,String] = Map(1 -> poo, 4 -> puu)

scala> var piipo = acha ++ porute
piipo: scala.collection.immutable.Map[Int,String] = Map(1 -> poo, 2 -> fuu, 3 -> woo, 4 -> puu)

◆値を取得「getOrElse」を使うと存在しない要素を指してもデフォルトを返す事ができるので、便利
scala> acha.getOrElse(3,"poo")
res__: String = woo

scala> acha.getOrElse(4,"poo")
res__: String = poo

◆要素を削除
scala> piipo -= 4

scala> piipo
res__: scala.collection.immutable.Map[Int,String] = Map(1 -> poo, 2 -> fuu, 3 -> woo)

◆要素にkeyが含まれるか確認
scala> piipo -= 4

scala> acha.contains(1)
res__: Boolean = true

scala> acha.contains(4)
res__: Boolean = false

◆要素内のkeyの最大/最小のkeyを確認
scala> acha.keys.reduce(_ max _)
res__: Int = 3

scala> acha.keys.reduce(_ min _)
res__: Int = 1

◆要素のvalueに指定した文字の有無を確認
scala> acha.values.exists(_.contains("fuu"))
res__: Boolean = true

scala> acha.values.exists(_.contains("poo"))
res__: Boolean = false

◆…
scala> var porute = acha.keys
porute: Iterable[Int] = Set(1, 2, 3)

scala> porute
res__: Iterable[Int] = Set(1, 2, 3)

scala> var piipo = acha.values
piipo: Iterable[String] = MapLike(boo, fuu, woo)

scala> piipo
res__: Iterable[String] = MapLike(boo, fuu, woo)

scala> acha.get(1).contains("boo")
res__: Boolean = true

scala> acha.get(1).contains("woo")
res__: Boolean = false



Copyright © 2015 AchaPorutePiipo All Rights Reserved.