前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >scala(十八) Map

scala(十八) Map

作者头像
用户1483438
发布2022-04-20 15:20:27
2440
发布2022-04-20 15:20:27
举报
文章被收录于专栏:大数据共享大数据共享

Map 集合

Scala中的Map和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射,Scala中不可变的Map是有序的,可变的Map是无序的。

不可变Map

创建不可变Map

代码语言:javascript
复制
val map=Map("a"->1,"b"->2,"c"->3)

或者

代码语言:javascript
复制
val map=Map(("a",1),("b",2),("c",3))

更或者混合使用

代码语言:javascript
复制
val map=Map(("a",1),"b"->2,"c"->3)

只有是二元元组就可以

支持的Api

代码语言:javascript
复制
scala> map.
+              contains       foldLeft             iterator       product             splitAt        toStream
++             copyToArray    foldRight            keySet         reduce              stringPrefix   toString
++:            copyToBuffer   forall               keys           reduceLeft          sum            toTraversable
-              count          foreach              keysIterator   reduceLeftOption    tail           toVector
--             default        genericBuilder       last           reduceOption        tails          transform
/:             drop           get                  lastOption     reduceRight         take           transpose
:\             dropRight      getOrElse            lift           reduceRightOption   takeRight      unzip
WithFilter     dropWhile      groupBy              map            repr                takeWhile      unzip3
addString      empty          grouped              mapValues      runWith             to             updated
aggregate      equals         hasDefiniteSize      max            sameElements        toArray        values
andThen        exists         hashCode             maxBy          scan                toBuffer       valuesIterator
apply          filter         head                 min            scanLeft            toIndexedSeq   view
applyOrElse    filterKeys     headOption           minBy          scanRight           toIterable     withDefault
canEqual       filterNot      init                 mkString       seq                 toIterator     withDefaultValue
collect        find           inits                nonEmpty       size                toList         withFilter
collectFirst   flatMap        isDefinedAt          orElse         slice               toMap          zip
companion      flatten        isEmpty              par            sliding             toSeq          zipAll
compose        fold           isTraversableAgain   partition      span                toSet

+ 添加一个元素,返回一个新的map

代码语言:javascript
复制
  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val newMap=map.+("d"->4)

    println(newMap)
  }
代码语言:javascript
复制
Map(a -> 1, b -> 2, c -> 3, d -> 4)

++ 添加一组map

代码语言:javascript
复制
  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val newMap=map.++(List("d"->4,"e"->5,"f"->6))

    println(newMap)
  }
代码语言:javascript
复制
Map(e -> 5, f -> 6, a -> 1, b -> 2, c -> 3, d -> 4)

++: 添加一组map

代码语言:javascript
复制
  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val newMap=map.++:(List("d"->4,"e"->5,"f"->6))

    println(newMap)
  }

结果和++一样

代码语言:javascript
复制
Map(e -> 5, f -> 6, a -> 1, b -> 2, c -> 3, d -> 4)

- 根据key删除元素

代码语言:javascript
复制
  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val newMap=map.-("a")

    println(newMap)
  }
代码语言:javascript
复制
Map(b -> 2, c -> 3)

-- 根据一组key删除元素

代码语言:javascript
复制
  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val newMap=map.--(List("a","c"))

    println(newMap)
  }
代码语言:javascript
复制
Map(b -> 2)

map 获取元素,key不存在直接报错

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map("a")

    println(value)
  }
代码语言:javascript
复制
1
代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map("d")

    println(value)
  }
代码语言:javascript
复制
java.util.NoSuchElementException: key not found: d

get 获取元素,返回的是一个Option

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.get("a")

    println(value)
  }
代码语言:javascript
复制
Some(1)

若要读取数字1,需要再调用一个get

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.get("a").get

    println(value)
  }
代码语言:javascript
复制
`

若无数据返回Node

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.get("d")

    println(value)
  }
代码语言:javascript
复制
None

getOrElse 若没数据,可以指定一个默认值

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.getOrElse("d",4)

    println(value)
  }
代码语言:javascript
复制
4

updated 修改元素

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.updated("a",100)

    println(value)
  }
代码语言:javascript
复制
Map(a -> 100, b -> 2, c -> 3)

keys 获取map中所有的key

代码语言:javascript
复制
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.keys

    println(value)
  }
代码语言:javascript
复制
Set(a, b, c)

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Map 集合
  • 不可变Map
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档