博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala-05-map映射
阅读量:6375 次
发布时间:2019-06-23

本文共 2380 字,大约阅读时间需要 7 分钟。

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],如果没有找到该记录,则返回Nonedef 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) )   }

 可变包结构图: 

 

不可变包结构图

 

 

 

转载地址:http://svtqa.baihongyu.com/

你可能感兴趣的文章
HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
查看>>
家里蹲大学数学杂志期刊模式目录
查看>>
数据结构:最小生成树--Kruskal算法
查看>>
Swift_1_基本数据类型
查看>>
POJ 1849 Two(遍历树)
查看>>
Recurrent Neural Network[CTC]
查看>>
VS注释与取消注释快捷键
查看>>
深入解析Vuex实战总结
查看>>
.NET编译项目时出现《此实现不是 Windows 平台 FIPS 验证的加密算法的一部分》处理方法...
查看>>
流水落花春去也
查看>>
从.NET中委托写法的演变谈开去(下):性能相关
查看>>
C# 多人聊天程序
查看>>
【教训】为什么不作备份?!
查看>>
网搜索引擎架构设计
查看>>
iOS笔记:内存管理
查看>>
python开发_python中str.format()
查看>>
HTML5, CSS3, ES5新的web标准和浏览器支持一览 转
查看>>
ThinkPHP3.0启动过程
查看>>
【leetcode】Longest Common Prefix (easy)
查看>>
JAX-WS(JWS)发布WebService
查看>>