Scala学习-6.3集合类型Set、Map

object Demo {
  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)
  
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容