scala基础-map/tuple初印象

1、不可变Map定义

默认情况下map是构造不可变的集合,里面内容不可修改,一旦修改就变成新的map,原有map内容保持不变;
如果想直接new出Map实例,则需要使用HashMap等具体的Map子类;

// 不可变Map
    val bigDatas = Map("Spark"->6, "Hadoop"->11)
// 调用工厂方法模式apply来构造Map实例,而需要注意的是Map是接口,在apply中使用了具体的实现

同时其实不可变的,不可对其进行增删改。

2、可变Map定义

// 可变Map
    val programingLanguage = scala.collection.mutable.Map("scala" -> 13, "java" -> 23)
    programingLanguage("scala") = 30
    for((name, age) <- programingLanguage) println(name + " = " + age)

输出:

scala = 30
java = 23

3、HashMap的使用

3.1HashMap定义

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

3.2 增删操作

// 增加元素
personsInformation("Jerry") = 32;
personsInformation("Tom") = 12;
personsInformation += ("Marry" -> 45, "Chare" -> 11)
// 删除元素
personsInformation -= ("Marry")
for((name, age) <- personsInformation) println(name + " : " + age)

输出:

Jerry : 32
Chare : 11
Tom : 12

3.3 getOrElse的使用

查询一个Map中的值一定要采用getOrElse的语法(因为如果查询值不在Map中,一方面在key不存在的情况下不报异常,可能会报以下错误:
“java.util.NoSuchElementException: key not found: Bob”;
另外一个神奇的作用就是提供默认值,而关于默认值的提供在实际开发中至关重要,在spark中很多默认值都是通过getOrElse的方式来实现。

// java.util.NoSuchElementException: key not found: Bob
// println(personsInformation("Bob"))
println(personsInformation.getOrElse("Bob", 23))// 查询Jerry对应的值,没有则打印23,有则打印对应value

输出:

23

3.4 获取key或者value

// 只打印key
for(key <- personsInformation.keySet) println( key )
// 只打印value
for(value <- personsInformation.values) println( value )

输出:

Jerry
Chare
Tom
32
11
12

3.5 使用yield将key\value倒置

val result = for((key, value) <- personsInformation) yield(value, key)
    for((key, value) <- result) println(key + " : " + value)

输出:

32 : Jerry
11 : Chare
12 : Tom

4、排序的Map(SortedMap)的定义以及使用

使用SortedMap可以得到排序的Map集合。

// 定义一个排序的Map
val persons = scala.collection.immutable.SortedMap("c" -> 3, "a" -> 2, "e" -> 1, "b" -> 99)
for((key, value) <- persons) println(key + " : " + value)

输出:

a : 2
b : 99
c : 3
e : 1

5、LinkedHashMap的定义

LinkedHashMap可以记住插入数据的顺序,这在实际开发中非常有用;按照输入的顺序进行输出。

val person2 = scala.collection.mutable.LinkedHashMap("c" -> 3, "a" -> 2, "e" -> 1, "b" -> 9)
for((key, value) <- person2) println(key + " : " + value)

输出:

c : 3
a : 2
e : 1
b : 9

6、tuple的定义

1、Tuple中可以有很多不同类型的数据;
2、在企业级实际开发大数据的时候一定会反复的使用Tuple来表达数据结构,以及使用Tuple来处理业务逻辑;
3、Tuple的另外一个非常重要的作用是作为函数的返回值,在Tuple中返回若干个值。

// 定义一个tuple
    val personIntroduce = ("Jerry", "male", 23, "FUZHOU", "It's a good boy")
    println("My name is " + personIntroduce._1 + ". I'm " + personIntroduce._3 + " years old !")

输出:

My name is Jerry. I'm 23 years old !
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值