scala映射和元组
1.构造映射
//构造一个不可变映射
val myMap = Map("key1" -> "val1", "key2" -> "val2","key3" ->"val3")
println(myMap("key2"))
//构造可变映射
val myMap2 = new scala.collection.mutable.HashMap[String,String]
myMap2.+=("kk" -> "vv")
2.获取映射中的值
根据key获取得到对应value的值。如果映射中不包含key值,则会抛出异常,可以使用contains方法检查是否包含某一个key。
val kkkey = if(myMap2.contains("kkk")) myMap2("kk") else "newval"
println(kkkey)
//快捷方法
println(myMap2.getOrElse("kkk", "new value2"))
3.更新映射中的值
//直接通过“=”进行赋值就可以更改对应key的value的值
myMap2("kk") = "value3"
//通过+=操作来添加元素
myMap2 += ("key10" -> "value10")
println(myMap2("key10"))
//通过-=来移除映射中对应key的元素
myMap2 += ("key10")
4.遍历映射
//获取key或value的集合
myMap2.keySet;
myMap2.values
//遍历映射
for((k,v) <- myMap2){
println("k" +" ->" + v)
}
//交换key value
val newMap = for((k,v) <- myMap2) yield (v,k)
for((k,v) <- newMap){
println(k + " -> " + v)
}
5.映射排序
val newMap = scala.collection.immutable.SortedMap("k1" ->"v1","k3" -> "v3","k2" -> "v2")
for((k,v) <- newMap){
println(k + " -> " + v)
}
输出:
k1 -> v1
k2 -> v2
k3 -> v3
//要按照插入顺序访问键值,使用LinkedHashMap,因为各个元素按照插入顺序两两先后之间维持了一个指针
val newMap = scala.collection.mutable.LinkedHashMap("k1" ->"v1","k3" -> "v3","k2" -> "v2")
for((k,v) <- newMap){
println(k + " -> " + v)
}
输出:
k1 -> v1
k3 -> v3
k2 -> v2
6.元组
元组是不同类型的值的聚集。//定义一个元组
val t = (11,11.11,"sreing")
//通过"._n"进行元组元素的访问(n表示从1开始的索引)
println(t._1 )
//元组多用于函数返回值不止一种的情况
如:println(("Cai Yong").partition(_.isLower))
输出:(aiong,C Y)
7.拉链操作
使用元组的原因之一就是把多个不同类型的值捆绑在一起,以便它们能够被一起处理,可以用zip方法来完成。val pairs = keys.zip(vals)
for((k,v) <- pairs) println(k + " -> " + v)
//如果有一个键集合和一个对应的值集合,那么就可以用拉链将它们组合成一个映射。
keys.zip(vals).toMap
>>>>>__以上内容摘自:《快学Scala》 [美]Cay S. Horstmann著 电子工业出版社__<<<<<