scala 基础七 scala Map和元组的操作

1.Map的介绍

Map(映射)是一种可迭代的键值对(key/value)结构。所有的值都可以通过键来获取。Map 中的键都是唯一的。Map 也叫哈希表(Hash tables)。Map 有两种类型,可变与不变,区别在于可变对象可以修改它,而不可变对象不可以。默认情况下 Scala 使用不可变 Map。如果你需要使用可变集合,你需要显式的引入 import scala.collection.mutable.Map

2.Map 的分类和定义

    //不可变Map
    var m1=Map("james"->20,"luce"->22);
    
    //指定泛型,如果不指定scala会根据类型自动判断
    var m3=scala.collection.mutable.Map[String,Int]();

 

 3.不可变Map的使用

 
    //根据Key获取value 如果key不存在的话会抛出异常
    m1("james");
    
    //等同于m1("james") 如果key不存在的话会 返回None
    m1.get("james");
    
    //给key 设置一个默认值,如果key 不存在就设置为20 不至于抛出异常
    m1.getOrElse("tom", 20)
    
    //获取所有的key 
    m1.keys 
    
    //获取所有的value
    m1.values

 4.可变Map的操作

  //可变Map
    var m2=scala.collection.mutable.Map("james"->20,"luce"->22);
    
    //产生一个新的对象,不会动态增加
    m2+("lili"->18)
    
    //不产生新对象直接在m2 中增加对象
    m2+=("lili"->18);

 5.遍历集合

    遍历所有的key 和value  格式for((k,v)<-x){....}

//可变Map
var m2=scala.collection.mutable.Map("james"->20,"luce"->22);
//遍历Key 和Value
 for((k,v)<-m2){println("key is"+k+" value is"+v)}

result:

key isjames value is20
key isluce value is22
key islili value is18

 单独的遍历Key 或者value   for((k,_)<-x){}  for((_,v)<-x){}

//只遍历所有的key value 省略
for((k,_)<-m2) println("key is "+k)
    
//只遍历所有的value key省略
for((_,v)<-m2) println("value is"+v)



result:
key is james
key is luce
key is lili
value is20
value is22
value is18

 6.元组的介绍和使用

与列表一样,元组也是不可变的,但与列表不同的是元组可以包含不同类型的元素。

val t = (1, 3.14, "Fred")

 以上实例在元组中定义了三个元素,对应的类型分别为[Int, Double, java.lang.String]。

元组的取值

元组 通过 ._ 取值, 下标从1 开始,比如 t._1 将获取1 这点和数组不同,数组的下标是从0开始的

val t = (4,3,2,1)

val sum = t._1 + t._2 + t._3 + t._4

println( "元素之和为: "  + sum )  

//scala 的元组允许多层嵌套,格式为。
val t = ("tome",("james",(18,"boy")))  
println(t._1+" "+t._2._1+" "+t._2._2._1+" "+t._2._2._2);

 

元组的迭代

你可以使用 Tuple.productIterator() 方法来迭代输出元组的所有元素:

  //通过 productIterator 迭代元组
    for(x<-t.productIterator) println(x)

 

转载于:https://www.cnblogs.com/IChing/p/7098046.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值