美文网首页
scala(十八) Map

scala(十八) Map

作者: 万事万物 | 来源:发表于2021-07-07 08:14 被阅读0次

Map 集合

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

不可变Map

创建不可变Map

val map=Map("a"->1,"b"->2,"c"->3)

或者

val map=Map(("a",1),("b",2),("c",3))

更或者混合使用

val map=Map(("a",1),"b"->2,"c"->3)

只有是二元元组就可以

支持的Api

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

  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

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

    println(newMap)
  }
Map(a -> 1, b -> 2, c -> 3, d -> 4)

++
添加一组map

  @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)
  }
Map(e -> 5, f -> 6, a -> 1, b -> 2, c -> 3, d -> 4)

++:
添加一组map

  @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)
  }

结果和++一样

Map(e -> 5, f -> 6, a -> 1, b -> 2, c -> 3, d -> 4)

-
根据key删除元素

  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val newMap=map.-("a")

    println(newMap)
  }
Map(b -> 2, c -> 3)

--
根据一组key删除元素

  @Test
  def map(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

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

    println(newMap)
  }
Map(b -> 2)

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

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map("a")

    println(value)
  }
1
  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map("d")

    println(value)
  }
java.util.NoSuchElementException: key not found: d

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

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.get("a")

    println(value)
  }
Some(1)

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

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

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

    println(value)
  }
`

若无数据返回Node

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.get("d")

    println(value)
  }
None

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

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

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

    println(value)
  }
4

updated
修改元素

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

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

    println(value)
  }
Map(a -> 100, b -> 2, c -> 3)

keys
获取map中所有的key

  @Test
  def map1(): Unit ={
    val map=Map(("a",1),"b"->2,"c"->3)

    val value=map.keys

    println(value)
  }
Set(a, b, c)

相关文章

  • scala(十八) Map

    Map 集合 Scala中的Map和Java类似,也是一个散列表,它存储的内容也是键值对(key-value)映射...

  • Scala 简明速学04 集合-Map

    Scala 简明速学04 集合-Map Map Scala中Map提供键值对集合。 Map的初始化 Scala中的...

  • Scala使用fastJson整理

    内容整理 字符串Map => JSONObject => Scala Map Scala Map => JSONO...

  • fastjson

    scala using fastjson parse json JSONObject to Scala Map

  • Scala语法

    转摘地址: Scala中的Map使用例子Scala 技术笔记之 Option Some None Map 不可变M...

  • scala的map操作

    scala的Map操作这里就涉及到了scala函数式编程的内容了。 Map有什么用? map可以对集合进行操作,将...

  • map & flatMap in scala

    用scala有段时间了,这篇文章是想总结一下map和flapMap的原理和用法 Scala Native map ...

  • scala map json 互转用例

    Scala map json 互转demo 运行结果

  • Scala相关文章索引(2)

    基本常识 scala编程第17章学习笔记(1)——集合类型 scala Map类型笔记 scala代码风格指南--...

  • scala map

    map创建不可变map:val score = Map("zhangsan"->90,"lisi"->80)可变m...

网友评论

      本文标题:scala(十八) Map

      本文链接:https://www.haomeiwen.com/subject/tqwayltx.html