大数据系列-Scala学习4

问题:
1、Map(映射)的操作
2、Tuple(元组)的操作
1、映射
映射是键/值对偶的

val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8)

上述代码构造出一个不可变的Map[String,Int],其值不能被改变,如果你想要一个可变映射可以用

var score=scala.collection.mutable.Map("Alice"->10,"Bob"->3,"Cindy"->8)

如果你只是想定义一个空的映射,你需要选定一个映射实现并给出类型参数

val scoress=new scala.collection.mutable.HashMap[String,Int]

获取映射中的值

 val bobsScore=scores("Bob")

如果用上面的方法会存在一个问题,如果请求中没有这个键,那么就会抛出异常
所以我们应该这么写
val bobs=if (scores.contains(“Bob”)) scores(“Bob”) else 0
println(bobs)
简介的写法是
val bob=scores.getOrElse(“Bob”, 0)
println(bob)

更新映射中的值 假设score是一个可变的映射
score(“Bob”)=10 更新原来的值
score(“Fred”)=9 增加一个键/值对
score +=(“xlucas”->20,”xulu”->19) 用+=来增加多个关系
score -=”xlucas” 移除某一个键

迭代遍历
for((k,v)<-score) println(v,k)
for(v<-score.values) println(v)

案例

package cn.xlucas.day4
object TupleDemo1 {
  def main(args:Array[String]){
    val scores=Map("Alice"->10,"Bob"->3,"Cindy"->8)
    var score=scala.collection.mutable.Map("Alice"->10,"Bob"->3,"Cindy"->8)
    val scoress=new scala.collection.mutable.HashMap[String,Int]
    println(scores)

    //获取到映射中的值

    val bobsScore=scores("Bob")
    println(bobsScore)

    //如果用上面的方法会存在一个问题,如果请求中没有这个键,那么就会抛出异常
    //所以我们应该这么写
    val bobs=if (scores.contains("Bob")) scores("Bob") else 0
    println(bobs)
    //简介的写法是 
    val bob=scores.getOrElse("Bob", 0)
    println(bob)
    score("Bob")=10
    score("Fred")=9

    score +=("xlucas"->20,"xulu"->19)
    score -="xlucas"
    println(score)
    for((k,v)<-score) println(v,k)
    for(v<-score.values) println(v)

  }
}

结果

Map(Alice -> 10, Bob -> 3, Cindy -> 8)
3
3
3
Map(Bob -> 10, Fred -> 9, Alice -> 10, xulu -> 19, Cindy -> 8)
(10,Bob)
(9,Fred)
(10,Alice)
(19,xulu)
(8,Cindy)
10
9
10
19
8

2、元组
(1)在元组当中可以存放很多个数据,元组中数据的访问是从下标1开始的.
(2)元组是很重要的,因为对于一个函数或算子来说,有可能会返回几个值,我们常用tuple中定义的几个变量来接受 函数返回的数值。

案例

package cn.xlucas.day4

object TupleDemo2 {
  def main(args:Array[String]){
    val tripe = ("Spark","Hadoop",88.8,20)
       println(tripe._1) //对于元组来说,数据的访问是从下标1开始的
       println(tripe._2)
       println(tripe._3)
       println(tripe._4)

       var a@b = "Spark"  //a是b的别名
       println(a+"\t"+b)
       a = "Hadoop"
       println(a+"\t"+b)

       val (c,d) = (100,"Spark")
       println(c+"\t"+d)

       val Array(e,f) = Array(100,300)
       println(e+"\t"+f)
  }
}

结果

Spark
Hadoop
88.8
20
Spark   Spark
Hadoop  Spark
100 Spark
100 300
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Scala核心编程课程简介近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。新一代的物联网时代到来,会对大数据应用人才的需求越加紧迫。 尚硅谷网罗和整合了学员很喜爱的师资,打造出专注于Spark开发的Scala课程,我们讲解Scala核心编程技术,同时也讲解编程思想、设计模式和Scala底层实现,让您有豁然开朗的感受。二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数推断、控制抽象、Trait、面向对象编程、异常处理、惰性函数、Akka及Actor模型、Spark Master和Worker通讯、隐式转换、隐式参数、工厂模式、单例模式、观察者模式、装饰者模式、代理模式、泛型、上下界、视图界定、上下文界定、协变逆变不变和源码剖析。通过系统全面的学习,学员能掌握Scala编程思想和Scala底层机制,为进一步学习Spark打下坚实基础。三、谁适合学1.希望以较低的投入和风险,来了解自己是否适合转型从事Spark开发的求职人员。2.有一定的Java基础,或者自学过一些Java书籍与视频资料,想系统掌握Scala语言的程序员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值