scala映射和元组

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著   电子工业出版社__<<<<<



你可能感兴趣的:(Scala)