scala映射和元组

来源:互联网 发布:美国指数型基金数据 编辑:程序博客网 时间:2024/05/18 09:11

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



0 1
原创粉丝点击