scala中的map集合
map集合的创建
创建一个不可变的map
不可变的map,其值是不可以被改变的
val map = Map("name"->"张三","age"->25)
println(map.get("name"))//Some(张三)
println(map("name"))//张三
//不能更新一个不可变的映射,但可以做一些有用的操作获取一个新的映射:
val newScores = map +("sex"->"男","hobby"->"唱歌")
println(newScores.mkString(","))
创建一个可变的map
可变的map,其值是可以被改变的
import scala.collection.mutable
val map = mutable.Map("name"->"张三","age"->25)
//创建一个空的映射开始,必须new它的实现类,并且给出泛型的类型
val map2 = new mutable.HashMap[String,Any]()
在可变map中添加修改映射关系
import scala.collection.mutable
val map = new mutable.HashMap[String,Any]()
//下面三行都是如果map集合中没有该键就添加数据,如果有该键,就修改数据
map+=("name"->"张三","age"->23)
map("address")="江苏省"
map.update("sex","男")
//默认以键名的Hash值排序
println(map.mkString(","))//address -> 江苏省,age -> 23,name -> 张三,sex -> 男
在可变map中删除映射关系
//根据键删除键和值,可以删除多个,键不存在也不会报错,不删
map-=("address")
println(map.mkString(","))//age -> 23,name -> 张三,sex -> 男
判断map中是否存在该键
//如果存在name键,便返回该键的值,否则返回"map中不存在name键"
val name = map.getOrElse("name","map中不存在name键")
遍历map集合
for ((k,v)<- map){
println(k+"================"+v)
}
//遍历所有的键
for (k <- map.keySet){
println(k)
}
//得到所有的值
for (v <- map.values){
println(v)
}
按输入顺序排序的map
val link = mutable.LinkedHashMap("name"->"张三","sex"->"男","address"->"北京","school"->"清华")
println(link)
元组的定义
元组是不同类型数据的一个聚集
//元组里面最多有22个数据,可以省略不写类型,但如果写了必须写泛型
val t:Tuple3[Int,String,Char] = (1,"Hello",'男')
//如何获取元组的中的元素,下标从1开始
println(t._1)//1
println(t._2)//"Hello"
val (order,name,sex)=t
println(order)//1
println(name)//"Hello"
println(sex)'男'
val keys = Array("order","name","sex")
val value = Array(1,"张三",23)
val pairs = keys.zip(value)
println(pairs.mkString(","))//(order,1),(name,张三),(sex,23),如果两个数组长度不一样,pairs的长度等于数组短的那一个