scala-05-map映射

摘要:
MapScala映射是一组键/值对的对象。默认情况下,Scala使用不可变映射。如果要使用可变集合,则必须明确导入scala.collection.mutable.Map类。例如,如果已找到与给定键对应的值,则Scala的Map的get方法会生成Some,如果在Map中未定义给定的键,则将返回None。Option类型在Scala程序中经常使用,可以将其与Java中可用的null值进行比较,表示null值。
Map

Scala映射(Map)是一组键/值对的对象。 任何值都可以根据键来进行检索。键在映射中是唯一的,但值不一定是唯一的。映射也称为哈希表。映射有两种,不可变的和可变的。可变对象和不可变对象之间的区别在于,当对象不可变时,对象本身无法更改。

默认情况下,Scala使用不可变映射(Map)。如果要使用可变集合(Set),则必须明确导入scala.collection.mutable.Map类。如果想同时使用可变的和不可变映射(Map),那么可以继续引用不可变映射(Map),但是可以将mutable集合引用mutable.Map

1, 创建映射

 def createMap(): Map[String, String] ={
    //创建空map
    var A:Map[Char, Int] =Map()
    var colors = Map("red" -> "", "blue" -> "")
    //向集合中添加元素
    colors += ("yellow" -> "")
    colors
  }

2, map的基本操作

  def optMap(mulMap: Map[String, String]): Unit ={
    //返回所有的键
println(mulMap.keys)
    //返回所有的值
println(mulMap.values)
    //检查是否为空
println(mulMap.isEmpty)
    //map中是否存在值
    println(mulMap.contains("blue"))
  }

3, 链接映射

def main(args: Array[String]) {
      val colors1 = Map("red" -> "#FF0000", "azure" -> "#F0FFFF", "peru" -> "#CD853F")
      val colors2 = Map("blue" -> "#0033FF", "yellow" -> "#FFFF00", "red" -> "#FF0000")
      //use two or more Maps with ++ as operator
      var colors = colors1 ++colors2
      println( "colors1 ++ colors2 : " +colors )
      //use two maps with ++ as method
      colors = colors1.++(colors2)
      println( "colors1.++(colors2)) : " +colors )
   }

4, 取值:

def main(args: Array[String]) {
      val colors = Map("red" -> "#FF0000", "azure" -> "#F0FFFF","peru" -> "#CD853F")
      colors.keys.foreach{ i =>
         print( "Key = " +i )
         println("Value = " +colors(i) )}
   }
选项 (Option) 操作

ScalaOption[T]是由给定类型的零或一个元素的一种容器。Option[T]可以是Some [T]None对象,它代表缺少的值。 例如,如果已找到与给定键对应的值,则Scala的Map的get方法会生成Some(value),如果在Map中未定义给定的键,则将返回None

Option类型在Scala程序中经常使用,可以将其与Java中可用的null值进行比较,表示null值。 例如,java.util.HashMapget方法返回存储在HashMap中的值,如果没有找到值,则返回null

//如果找到记录,该方法将返回Some [Person],如果没有找到该记录,则返回None
def findPerson(key: Int): Option(Person) {}

样例

def main(args: Array[String]) {
      val capitals = Map("France" -> "Paris", "Japan" -> "Tokyo")
      println("show(capitals.get( "Japan")) : " + show(capitals.get( "Japan")) )
      println("show(capitals.get( "India")) : " + show(capitals.get( "India")) )
   }
   def show(x: Option[String]) =x match {
      case Some(s) =>s
      case None => "?"
   }

getOrElse() 方法, 没有则返回默认值

def main(args: Array[String]) {
      val a:Option[Int] = Some(5)
      val b:Option[Int] =None 
      println("a.getOrElse(0): " + a.getOrElse(0) )
      println("b.getOrElse(10): " + b.getOrElse(10) )
   }

可变包结构图:

scala-05-map映射第1张

不可变包结构图

scala-05-map映射第2张

免责声明:文章转载自《scala-05-map映射》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇让输入文字在div中的右下角Java生鲜电商平台-深刻理解电商的库存架构与解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章