• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
戈瑾
博客园    首页    新随笔    联系   管理    订阅  订阅
spark学习进度7——Scala中的Map集合

一、不可变集合

1、声明

(1)使用 -> 的方式声明

备注: 声明的Map集合的时候如果不加泛型,必须保证声明的map集合中有数据,因为有数据会自动适配,没有数据会返回Nothing

(2)使用对偶元组的方式声明

(3)Map集合在创建的时候不能使用new关键字,因为Map是一个接口

Java中也不能直接new Map,是new 的HashMap

(4)如果想new Map得导入HashMap的包

import scala.collection.immutable.HashMap

import scala.collection.immutable._

注意:当前的Map集合是一个不可变的集合,是不能改变的,所以这种声明方式没有任何意义。 因为每次放值进去会生成一个新的Map集合,等于是重新创建了一个对象。

(5)如果声明一个空的Map集合,可以往里面放值,然后形成一个新的Map集合

  • 使用 + 添加元素【可以添加元组,->】

每次添加完数据都会形成新的Map集合,原来的集合值不变。

  • 使用 ++ 添加一个Map集合

 

 

 2、取值

(1)get方式取值

 

 

 返回的是一个Option类型,如果想获取值得使用get方法:

注意:Some是一个类,是Option[选项]的子类。

(2)直接Map集合名(“key”)

 

 

 (3)通过key进行取值的时候,如果没有对应的value,可以给一个默认值: getOrElse


 

二、可变的Map集合

1、使用时需要导包

scala.collection.mutable.Map

scala.collection.mutable.HashMap

2、声明

val m1=mutable.Map[String,Int]("zhangsan"->100,"lisi"->200)

3、常用方法

+=:添加单个map元素,或者对偶元组:  put命令也是添加数据的。

-=:删除单个map元素,或者对偶元组:  remove命令删除数据的,根据key删除。

++=:添加一个Map集合,是对集合的操作

val m1=mutable.Map[String,Int]()
m1++=mutable.Map("zhangsan"->100,"lisi"->200)

--=:删除一个Map集合,是删除的key,使用List集合装key

val m1=mutable.Map[String,Int]("zhangsan"->100,"lisi"->200)
m1--=List("zhangsan")

keySet:将key放在set集合中

keys:将key放在set集合中,和keySet方法返回值一样

keysIterator:key的迭代器

1 def main(args: Array[String]): Unit = {
2     val map=mutable.Map[String,Int](("zs",1000),("ls",2000),("ww",3000))
3     val iterator: Iterator[String] = map.keysIterator
4     while (iterator.hasNext){
5       val str = iterator.next()
6       println(str) //返回所有的key。
7       println(map(str)) //通过key进行取值。
8        }
9     }

 

 

 清空Map集合:

  • map.clear

  • map--= map.keysIterator.toList

4、Map集合转换

toList、toSet【去重】、toBuffer(toBuffer只能转换为 ArrayBuffer不能转为 ListBuffer) 、toArray

也可将Array或Tuple的toMap方法转化为Map

 

 toSet去重排序:

 

posted on 2022-01-07 23:04  戈瑾  阅读(864)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3