zoukankan      html  css  js  c++  java
  • scala-05-map映射

    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) 操作

    Scala Option[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) )
       }

     可变包结构图: 

    不可变包结构图

  • 相关阅读:
    Chrome 开发者工具使用技巧
    POJ2485 Highways 【MST】
    Android 之UI自适应解决方式
    自己封装的轮播工具
    usb芯片调试经验
    SQLSEVER 中的那些键和约束
    mysql通过DATE_FORMAT将错误数据恢复
    vim使用(二):经常使用功能
    Linux系列-Xshell连接本地VMware安装的Linux虚拟机
    LeetCode 107 Binary Tree Level Order Traversal II(二叉树的层级顺序遍历2)(*)
  • 原文地址:https://www.cnblogs.com/wenbronk/p/7514668.html
Copyright © 2011-2022 走看看