Scala教程(五)Map、Tuple、Zip实战



Scala教程()MapTupleZip实战


1 /值对Map


1.1 定义数组

/值对的集合。任何值可以根据它的键进行检索。键是在映射唯一的,但值不一定是唯一的。映射也被称为哈希表。有两种类型的映射,不可变以及可变的。可变和不可变的对象之间的区别在于,当一个对象是不可变的,对象本身不能被改变。

  // 定义map
  val map = Map("book"->10,"pen"->3,"moblie"->2000,"PC"->5000)
  //> map  : scala.collection.immutable.Map[String,Int] = Map(book -> 10, pen -> 3, moblie -> 2000, PC -> 5000)

1.2 遍历Map

  // map中的元素 *0.9
  for((k,v) <- map) yield v *0.9                    
   //> res19: scala.collection.immutable.Iterable[Double] = List(9.0, 2.7, 1800.0, 4500.0)

1.3 动态Map    

  // 动态Map
  val scores = scala.collection.mutable.Map("Scala"->7,"Hadoop"->10,"Spark"->12)
  //> scores  : scala.collection.mutable.Map[String,Int] =
  //| Map(Hadoop -> 10, Spark -> 12, Scala -> 7)


   // 添加元素
   scores += ("R"->16)
   //> res20: com.scala.Scala.scores.type =
   //| Map(Hadoop -> 10, R -> 16, Spark -> 12, Scala -> 7)

   // 删除元素
   scores -=("Hadoop")
   //> res21: com.scala.Scala.scores.type =
   //|  Map(R -> 16, Spark -> 12, Scala -> 7)                                           
 

1.4 Map排序

  // 可元素进行排序Map
  val sortedScore = scala.collection.immutable.SortedMap("Scala"->7,"Hadoop"->10,"Spark"->12)
  //> sortedScore  : scala.collection.immutable.SortedMap[String,Int] = Map(Hadoo
  //| p -> 10, Scala -> 7, Spark -> 12)

2 元组Tuple


2.1 定义元组

  tuple最主要是自动识别变量类型,遍历时从1开始,可以用空格或者点加占位符进行数据访问,截取大写字母后拼接以及获得tuple中的部分数据,不需要的用占位符代替。  

  // tuple主要是能够自动识别变量类型,自己查看类型
  val tuple = (1,2,3.14,"Java","Scala")           
  //> tuple  : (Int, Int, Double, String, String) = (1,2,3.14,Java,Scala)

2.2 访问元素

  // 遍历时从1开始,可以是空格或者加占位符序列进行访问
  val third = tuple._3                            //> third  : Double = 3.14

2.3 多变量赋值

  // tuple变量赋值,部分变量赋值用占位符代替
  val(first,second,thirda,fourth,fifth) = tuple;  //> first  : Int = 1
                                                  //| second  : Int = 2
                                                  //| thirda  : Double = 3.14
                                                  //| fourth  : String = Java
                                                  //| fifth  : String = Scala
  // tuple元素值赋到f,s中,其它使用占位符
  val(f,s,_,_,_) = tuple                          //> f  : Int = 1
                                                  //| s  : Int = 2
 

2.4 partition折分

  // partition根据断言函数的返回值对列表进行拆分, 截取大写字母后拼接
  "Rocky Spark".partition(_.isUpper)              //> res22: (String, String) = (RS,ocky park)

3 Zip实战


3.1 Zip操作实战

  // Zip操作:按照两个数组的序列进行匹配组成新得元素
  val symbols = Array("[","-","]")                //> symbols  : Array[String] = Array([, -, ])
  val counts = Array(2,5,2)                       //> counts  : Array[Int] = Array(2, 5, 2)
  val pairs = symbols.zip(counts);                //> pairs  : Array[(String, Int)] = Array(([,2), (-,5), (],2))
  
  // ([*2)+(-*5)+(]*2)
  for((x,y)<-pairs)
  println(x*y)                                    //> [[
                                                  //| -----
                                                  //| ]]


--以上为Map、Tuple、Zip实战的内容,谢谢大家对我的关注。

                                                                                                                                                                                      ——厚积薄发(yuanxw)

你可能感兴趣的:(Scala教程(五)Map、Tuple、Zip实战)