Scala教程(五)Map、Tuple、Zip实战
键/值对的集合。任何值可以根据它的键进行检索。键是在映射唯一的,但值不一定是唯一的。映射也被称为哈希表。有两种类型的映射,不可变以及可变的。可变和不可变的对象之间的区别在于,当一个对象是不可变的,对象本身不能被改变。
// 定义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)
// 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)
// 动态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)
// 可元素进行排序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)
tuple最主要是自动识别变量类型,遍历时从1开始,可以用空格或者点加占位符进行数据访问,截取大写字母后拼接以及获得tuple中的部分数据,不需要的用占位符代替。
// tuple主要是能够自动识别变量类型,自己查看类型 val tuple = (1,2,3.14,"Java","Scala") //> tuple : (Int, Int, Double, String, String) = (1,2,3.14,Java,Scala)
// 遍历时从1开始,可以是空格或者加占位符序列进行访问 val third = tuple._3 //> third : Double = 3.14
// 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
// partition根据断言函数的返回值对列表进行拆分, 截取大写字母后拼接 "Rocky Spark".partition(_.isUpper) //> res22: (String, String) = (RS,ocky park)
// 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) //> [[ //| ----- //| ]]
——厚积薄发(yuanxw)