字典是一组键(key)和值(value)的组合,经过键(key)进行查找, 没有顺序 , 使用大括号”{}” !key不容许重复 !key不可变,value可变html
无序(有序看第7点),有可变和不可变两种,python
val info = Map("czm" -> 10, "CZM" -> 21) //格式1 val info = Map(("czm" , 10), ("CZM" , 21)) //格式2(更体现tuple做为存储单元) res0: scala.collection.immutable.Map[String,Int] = Map(czm -> 10, CZM -> 21) //修改值** + - **,并非改 info("czm") = 29 //错误 info + ("czm" -> 100) //这种方式只是生成了一个新的不可变的Map原值并未改变 info - "czm" //这种方式只是生成了一个新的不可变的Map原值并未改变
val info = scala.collection.mutable.Map("czm" -> 10, "CZM" -> 21) //格式1 val info = scala.collection.mutable.Map(("czm" , 10), ("CZM" , 21)) //格式2(更体现tuple做为存储单元) res0: scala.collection.mutable.Map[String,Int] = Map(czm -> 10, CZM -> 21) //修改值** += -= ** info("czm") = 29 //正确,若Key不存在,则增长 //一次增长多个 info += ("asd" -> 123,"aer" -> 122) //移除 info -= "czm" info -= ("czm","asd") //即便移除不存在的元素,不会报错
//HashMap是Map的实现类,不能直接实例化Map(抽象类)**跟JAVA同样** val info = scala.collection.mutable.HashMap[String,Int]()
在取值的时候,访问一个不存在的Key会报错,JAVA 返回Null,Python dict也会报错scala
//方法1 if (info.contains("nukl")) info("nukl") else 0 //方法2 info.getOrElse("nukl",0)
//对于存在的Key,赋值即修改 //对于不存在的Key,赋值即增长
//加强for循环 for ((key, value) <- info) { println(key + ":" + value) } //只要Key,也能够用keySet for (key <- info.keys) { println(key + ":" + info(key)) } //只要value for (value <- info.values) { println(value) }
//Map的另外一个实现类SortedMap,根据Key排序 var info = scala.collection.mutable.SortedMap("as" -> 12, "nSD" -> 23, "casd" -> 123) info: scala.collection.mutable.SortedMap[String,Int] = Map(as -> 12, casd -> 123, nSD -> 23) //Map的另外一个实现类LinkedHashMap,记住插入的顺序 var info = scala.collection.mutable.LinkedHashMap[String,Int]()