您的位置:首页 > 大数据

Dt大数据梦工厂王家林老师 Scala实战详解之第6讲 Map、Tuple、Zip实战解析

2015-09-15 01:06 363 查看
package com.dt.scalaInAction.demo_006

/**
* Map、Tuple、Zip实战解析
*/
object Map_Tuple {
def main(args: Array[String]): Unit = {
//静态定义map集合 注意这个map是不可变的  immutable
var map = Map("book"->23,"gun"->21,"ipad"->20)  //var map: Map[String, Int]
//通过模式匹配 做变换 注意此操作不影响原来的map集合  生成新的map集合 因为这种map是immutable类型的
var map1 = for((k, v) <- map ) yield (k, v * 0.9)
println(map)     //  Map(book -> 23, gun -> 21, ipad -> 20)
println(map1)    //  Map(book -> 20.7, gun -> 18.900000000000002, ipad -> 18.0)

//定义可修改的map集合  mutable
val scores = scala.collection.mutable.Map("Scala"->7, "Spark"->8, "Hadoop"->9)
//取值
val hadoop = scores.get("Hadoop")  //Some(9)
println("hadoop="+hadoop)
//getOrElse  取key为x的值 若不存在返回函数中第二个值
val x = scores.getOrElse("x", 1)  //1
println("x="+x)
//增加元素
scores += ("R"->9)    //Map(Hadoop -> 9, R -> 9, Spark -> 8, Scala -> 7)
//删除元素
scores -= "Hadoop"    //Map(R -> 9, Spark -> 8, Scala -> 7)

//按照key的然后顺序排序
val scoreMap = scala.collection.immutable.SortedMap("Scala"->7, "Spark"->8, "Hadoop"->9)  //Map(Hadoop -> 9, Scala -> 7, Spark -> 8)

/**
* 元祖
*/
//定义元祖
val tuple = (1, 2, 3, "Spark", "Scala")  //Map(Hadoop -> 9, Scala -> 7, Spark -> 8)
//通过下标取值 (是从1开始取值)
val thrid = tuple._3   //3
println("thrid="+thrid)

/**
* 如何接收tuple中的值
*/
val (one, two, three, four, fire) = tuple
println("one="+one+" two="+two+" three="+three+" four="+four+" fire="+fire)
//忽略接收
val (j, k, _, _, _) = tuple
println("j="+j+" k="+k)

//def partition(p: Char => Boolean): (String, String)
val (a, b) = "Spark Hadoop".partition(_.isUpper)
println("a="+a+" b="+b)   //a=SH b=park adoop

/*
* zip操作
*/
val symbols = Array("[", "-", "]")
val counts = Array(2, 5, 2)
val pairs = symbols.zip(counts)   //val pairs: Array[(String, Int)]
for (e <- pairs) println(e)  //([,2) (-,5)  (],2)
for ((x, y) <- pairs) print(x*y)  //[[-----]]

}
}


以上内容是从王家林老师DT大数据课程第6讲的学习笔记和个人整理。

DT大数据微信公众账号:DT_Spark

王家林老师QQ:1740415547

王家林老师微信号:18610086859

第6讲视频网站地址:http://pan.baidu.com/s/1ntnCdzN
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: