Scala | 学习Scala中的Set和Map

学习Scala中Set和Map

object Demo07 {
  println("Welcome to the Scala worksheet")       //> Welcome to the Scala worksheet
  
  //创建定长Set
  val s1=Set(1,1,2,2,3)                           //> s1  : scala.collection.immutable.Set[Int] = Set(1, 2, 3)
  //创建变长Set
  val s2=scala.collection.mutable.Set(1,2,3)      //> s2  : scala.collection.mutable.Set[Int] = Set(1, 2, 3)
  
  //创建一个定长Map。
  val m1=Map("tom"->23,"rose"->18)                //> m1  : scala.collection.immutable.Map[String,Int] = Map(tom -> 23, rose -> 18
                                                  //| )
  
  //创建一个变长Map,可以追加kv对
  val m2=scala.collection.mutable.Map("tom"->23,"rose"->18)
                                                  //> m2  : scala.collection.mutable.Map[String,Int] = Map(rose -> 18, tom -> 23)
                                                  //| 
  //变长Map追加kv对
  m2+=("jim"->25,"jary"->30)                      //> res0: Demo07.m2.type = Map(jary -> 30, jim -> 25, rose -> 18, tom -> 23)
  
  //通过key操作Map
  m1.apply("tom")                                 //> res1: Int = 23
  m1("tom")                                       //> res2: Int = 23
  
  //get方法也可以通过key获取value,返回的类型是Option(Some or None)
  m1.get("tom").getOrElse(0)                      //> res3: Int = 23
  m1.get("werewrw").getOrElse(0)                  //> res4: Int = 0
  
  //获取所有的key,一般为了便于处理,可以将迭代器转成List或Array再操作
  m1.keys.toList                                  //> res5: List[String] = List(tom, rose)
  //获取所有的value
  m1.values.toList                                //> res6: List[Int] = List(23, 18)
  
  val m3=Map("tom"->23,"rose"->18,"jim"->25)      //> m3  : scala.collection.immutable.Map[String,Int] = Map(tom -> 23, rose -> 18
                                                  //| , jim -> 25)
  
  //过滤出m3中年龄>20的数据
  //操作Map时,匿名函数的参数是一个(k,v)对
  val r1=m3.filter{case(k,v)=>v>20}               //> r1  : scala.collection.immutable.Map[String,Int] = Map(tom -> 23, jim -> 25)
                                                  //| 
  val r11=m3.filter{x=>x._2>20}                   //> r11  : scala.collection.immutable.Map[String,Int] = Map(tom -> 23, jim -> 25
                                                  //| )
  
  //对m3映射,人名不变,年龄+10
  val r2=m3.map{case(k,v)=>(k,v+10)}              //> r2  : scala.collection.immutable.Map[String,Int] = Map(tom -> 33, rose -> 28
                                                  //| , jim -> 35)
  val r21=m3.map{x=>(x._1,x._2+10)}               //> r21  : scala.collection.immutable.Map[String,Int] = Map(tom -> 33, rose -> 2
                                                  //| 8, jim -> 35)
  
  //如果在对Map类型映射时,如果key不变,只映射value,
  //可以使用mapValues。匿名函数的参数是Map的value
  
  val r3=m3.mapValues { v => v+10 }               //> r3  : scala.collection.immutable.Map[String,Int] = Map(tom -> 33, rose -> 28
                                                  //| , jim -> 35)
  
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值