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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值