Scala映射和元组
来源:互联网 发布:nginx 1.8.0 域名和ip 编辑:程序博客网 时间:2024/05/18 18:46
映射是键/值对偶的集合。Scala有一个通用的叫法——元组——n个对象的聚集,并不一定要想同类型的。对偶不过是一个n=2的元组。元组对于那种需要将两个或更多值聚集在一起时特别有用。
1、构造映射
val scores = Map("Alice"-> 10,"Bob"->3,"Cindy"->8)
上述代码构造出一个不可变的Map(String,Int),其值不能被改变。如果想要一个可变映射,则用
val scores = scala.collection.mutable.Map("Alice" -> 10,"Bob" ->3,"Cindy" ->8)
如果想从一个空的映射开始,你需要选定一个映射实现并给出类型参数:
val scores = new scala.collection.mutable.HashMap[String,Int]
在Scala中,映射是对偶的集合。简单的说,对偶就是两个值构成的组,这两个值不一定是同一个类型的,比如("Alice",10)。
->操作符用来创建对偶:"Alice" -> 10 ==> ("Alice",10)
也可以用另一种方式来定义映射:
val scores= Map(("Alice",10),("Bob",3),("Cindy",8))
2、获取映射中的值
在Scala中,使用()表示法来查找某键对应的值:
val bobsScore= scores("Bob")
如果映射中并不包含请求中使用的键,则会抛出异常。
要检查映射中是否有某个指定的键,可以用contains方法:
val bobsScore = if(scores.contains("Bob")) scores("Bob") else 0
或者:
val bobsScore = scores.getOrElse("Bob",0)
映射.get(键)返回一个Option对象,要么是Some,要么是None。
3、更新映射中的值
在可变映射中,更新或者添加一个新的映射关系:
scores("Bob") =10 //更新(scores是可变的)
scores("Fred") =7 //新加(scores是可变的)
或者:
scores += ("Bob"->10,"Fred"-> 7)
移除某个键和对应的值:
scores -= "Alice"
4、迭代映射
使用for循环遍历映射中所有的键/值对偶:
for((k,v) <-映射) 处理k和v
如果你只需要访问键或值,则可以像Java一样使用keySet和values方法。values方法返回一个Iterable
scores.keySet for(v <- scores.values) println(v)
要反转一个映射,即交换键和值的位置可用:
for((k,v) <- 映射) yield (v,k)
5、元组
对偶是元组最简单的形态——元组是不同类型的值得聚集
(1,3.14,"Fred")是一个元组,类型为:
Tuple3[Int,Double,java.lang.String]
访问其组元的方法为_1、_2、_3
val t=(1,3.14,"Fred") val second=t._2 //second=3.14
注意的是元组的下标从1开始。
6、拉链操作
使用元组的原因之一是把多个值绑在一起,以便它们能够被一起处理,这通常可以用zip方法来完成:
val symbols=Array("<","-",">") val counts=Array(2,10,2) val pairs=symbols.zip(counts)
输出对偶的数组:
Array(("<",2),("-",10),(">",2))
然后一起被处理:
for((s,n) <-pairs) Console.print(s*n)//会打印<<---------->>
- Scala映射和元组
- Scala 映射和元组
- Scala映射和元组
- scala映射和元组
- Scala映射和元组
- Scala 映射和元组
- Scala元组和映射
- scala------数组映射和元组
- Scala学习笔记-映射和元组
- Scala学习(四)---映射和元组
- Scala映射与元组
- Step into Scala - 10 - 映射和元组
- scala学习第四章 映射和元组
- Scala坑四(映射和元组)
- 快学Scala第4章--映射和元组
- scala学习笔记3 映射和元组
- 快学Scala(4) 映射和元组
- Scala 学习(三)--- 映射和元组
- 浏览器渲染页面和加载页面机制
- 技术支持面试题
- HTTP缓存
- 弹出框+清除缓存
- 数据结构实验之查找五:平方之哈希表
- Scala映射和元组
- C语言文件操作详解
- [刷题]算法竞赛入门经典(第2版) 5-6/UVa1595 - Symmetry
- 怎么用twilio发送免费短信.
- session机制
- C语言 入门到项目—第一章(再不跟上就晚了)
- Android事件传递机制分析
- IOS应用崩溃日志揭秘
- SpeedPHP controller