import scala.collection.mutable
/*
* 說明
* 和java類似,也是Hash Tables實作的map
* */
//不可變map
object MapTest extends App {
//1.初始化
var map = Map[String, Int]("x" -> 1, "y" -> 2, "z" -> 3)
//2.列印
println(map)
//3.添加元素
var map1 = map + (("m", 1)) //底層調用updated方法
var map2 = map.updated("p", 10)
println(map1)
println(map2)
println(map)
println("==========================")
//4.删除元素(根據key删除元素,不存在就傳回複制原對象)
var map3 = map - (("m"))
var map4 = map.removed("k")
println(map3)
println(map4)
println(map)
println("======================")
//5.通過key擷取value,傳回Option對象,沒有key時,傳回None
var value: Option[Int] = map.get("z")
println(value.get) //當沒有對應key時,會報空指針異常
//6.當key不存在時,傳回預設值
var defaultValue = map.getOrElse("p", 99)
var defaultValue1 = map.get("p").getOrElse(88)
println(defaultValue)
println(defaultValue1)
//7.擷取key的set
var keys = map.keys
var keys1 = map.keySet
println(keys1.getClass)
//8.擷取value的set
var values = map.values
println(values)
//9.周遊map
for (key <- map.keys) {
//printf("%s - %d\n", key, map.get(key).get)
printf("{%s : %d}\n", key, map.getOrElse(key, 0))
}
//10.foreach
def show(tp: (String, Int)) = printf("{%s : %d}\n", tp._1, tp._2)
map.foreach(x => println(x.getClass))
//操作的參數為元組
map.foreach(show _)
}
//可變map
object VarMapTest extends App {
//1. 初始化
var map = mutable.Map[String, Int]("x" -> 1, "y" -> 2, "z" -> 3)
//2. 添加元素(修改調用對象)
map += ("p" -> 9)
map.put("m", 19)
map.update("q", 16)
println(map)
//3.通過key擷取value
println(map.get("m").get) //傳回Option對象,當未找到key時,傳回None
println(map.getOrElse("m", 99)) //當未找到key時,傳回預設值
//4.删除資料(通過key)
map -= ("p", "q")
println(map)
//5.更新資料(有則更改,無則添加)
map.update("m", 100)
println(map)
}