scala映射和元组
scala映射,是一对键值对,相当于java中的Map
对偶:由两个值构成的组,形式 : 值1->值2,值1和值2类型不一定要相同,可以理解为对偶就是一个key/value
映射就是对偶的集合
示例:
val socres2= scala.collection.immutable.Map("Alice"->3,"Bob"->10,"Imok"->8) // 不可修改的映射
val socres= scala.collection.mutable.Map("Alice"->3,"Bob"->10,"Imok"->8) //可修改映射
创建一个空值的映射,需要选定一个映射的实现并给出类型参数
val socres = scala.collection.mutable.HashMap[String.Int]
映射的另一种表示方法
val scores = Map(("Alice",10),("Bob",10),("Imok,8"))
映射基本操作
1、取值
val v = socres("Alice") // 等价于 val v = socres.get("Alice").get
映射的get方法返回的是一个Option类对象,要么是Some,要么是None
val v = if(socres.contains("Bob")) socres("Bob") else 0 // 等价于 val v = socres.getOrElse("Bob",0)
2、更新、添加、删除
socres("Alice") = 19 //更新
socres+=("Fred"->7,"Tom"-> 16) //添加多个
socres-="Alice" //删除
3、不可变的映射虽然不能去修改,但是可以在其基础上做一些操作构建一个新的映射
val socres2= scala.collection.immutable.Map("Alice"->3,"Bob"->10,"Imok"->8) // 不可修改的映射
val score3 = scores2 + ("Tom"->7,"Bob"->6) //Tom->7 添加了,"Bob"->6更新了
val score3 = scores2 - "Alice" //去掉 "Alice" 的新的映射
4、迭代映射
//迭代映射
for((k,v) <- socres)
println(k + ":" + v) //迭代键值k
for(k <- socres.keySet)
println(k + ":" + socres(k)) //迭代值 v
for(v <- socres.values)
println(v)
5、反转映射
for((k,v) <- socres) yield (v,k) //键值交换
6、 有序映射
元组
元组是不同类型的值的聚集,对偶是元组的最简单的实现
val t = (1,3.14,"Fred") var second = t._2 //通过_1 _2 _3访问组元 ,另外一种表示方法 t _2
使用模式匹配获取组元
val t = (1,3.14,"Fred")
val (first,second,third) = t
println(first) //1
println(second) //3.14
println(third) //Fred
拉链操作
有一个键的集合,以及与之平行的值的集合,可以用拉链操作(zip方法)将它们组成一个映射
val symbools = Array("<","-",">")
val counts = Array(2,10,2)
val pairs = symbools.zip(counts) //构成对偶数组 Array((<,2)(-,10)(>,2)),可以同步toMap方法将对偶集合转换成映射
for(i <- 0 until pairs.length)
print(pairs(i)) //
for((s,n) <- pairs) print(s*n)
scala映射和元组的更多相关文章
- Scala映射与元组篇
*Scala有十分易用的语法来创建.查询和便利映射 *你需要从可变的和不可变的映射中做出选择 *默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射 *你可以很容易地在Scala映射和Jav ...
- 【scala】 scala 映射和元组操作(四)
1.映射 Map 定义 ,取值,遍历,排序 2. 元组 定义,取值,拉链操作 import scala.collection.mutable /** * 映射和元组 * * @author xwol ...
- Scala从入门到精通之四-映射和元组
在Scala中映射之键值对的集合,元组是n个对象的聚集,但是对象的类型不一定相同 本节内容要点 Scala中映射的创建,遍历和查询 如何从可变和不可变映射中做出选择 Scala映射和Java映射见的互 ...
- Scala学习(四)---映射和元组
映射和元组 摘要: 一个经典的程序员名言是:"如果只能有一种数据结构,那就用哈希表吧".哈希表或者更笼统地说映射,是最灵活多变的数据结构之一.映射是键/值对偶的集合.Scala有一个通用的叫法:元组, ...
- 快学Scala习题解答—第四章 映射和元组
4 映射和元组 4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作 ,"gun"->18 ...
- Scala的映射和元组操作
映射和元组操作 构造Map // 构造一个不可变的MAP映射,类似与key -> value这样的组合叫做对偶 val score = Map("Jack" -> 12 ...
- scala学习笔记(4)映射和元组
1.构造映射 //构造这样的一个映射 val sources=Map(,,) //构造了一个不可变的Map[String,Int],值不能改变, //可变映射 val scores = new sca ...
- Scala从入门到放弃(三)Scala的数组、映射、元组和集合
1.数组 1.1定长数组和变长数组 object ArrayDemo { def main(args: Array[String]): Unit = { //初始化一个长度为8的定长数组,其数组元素均 ...
- 学好Spark/Kafka必须要掌握的Scala技术点(一)变量、表达式、循环、Option、方法和函数,数组、映射、元组、集合
前言 Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作.正如之前所介绍,Spark是用Scala语言编写的,Kafka server端 ...
随机推荐
- requireJS的优化工具 ---- r.js
requireJS是javascript的模块加载器,是基于AMD规范实现的. r.js是其提供的对模块进行打包和构建的一个工具 下载 r.js 创建r.js 的配置文件 build.js build ...
- IP:192.168.21.173 子网掩码:255.255.255.0 网关:192.168.21.2 DNS:8.8.8.8 8.8.4.4 1、设置IP地址、网关 ee /etc/rc.conf #编辑 ifconfig_em0="inet 192.168.21.173 netmask 255
IP:192.168.21.173子网掩码:255.255.255.0网关:192.168.21.2DNS:8.8.8.88.8.4.41.设置IP地址.网关ee /etc/rc.conf #编辑if ...
- (二)svn服务端安装配置
两种服务端安装包 官方安装包 官方网站:http://subversion.apache.org/ 下载:http://subversion.apache.org/download.cgi 官方提供的 ...
- ul标签在FF中默认只有padding值(即:padding-left:40px)
- php 四种基本排序算法
冒泡排序 思路分析:法如其名,就是像冒泡一样,每次从数组当中 冒一个最大的数出来. 第一轮:从第一个到最后一个冒泡比较,运行结果:最后一个最大 第二轮:从第一个到倒数第二个冒泡比较, 运行结果:最后一 ...
- JS支持可变参数(任意多个)
<script type="text/javascript"> function abc(){ //js中有个变量arguments,可以访问所有传入的值 for(va ...
- Python3循环语句
Python3 循环语句 Python中的循环语句有for和while. 循环语句控制结构图如下: 一.while循环 ①循环结构 while 判断条件: 执行语句 实例: n = int(input ...
- Andriod ADB Interface驱动安装失败Configure USB Debug for Android
介绍: Linux或Apple或OS X ,已经安装了USB驱动调试为Android的帮助,确认您的Android USB调试连接配置和正常工作. Windows下需要自己手动下载驱动安装或者通过下载 ...
- 关于c++对文件读写的封装
namespace { UINT_T GetWriteSizeForNoBuf(UINT_T fsize) { UINT_T write_buf_size = ; == ) { write_buf_s ...
- memset赋初值的运用
int ”较“的原则:加法不爆. 极大值:0x7f 较大值:0x3f 较小值:0xc0 极小值:0x80 long long ”较“的原则:加法不爆. 极大值:0x7f 较大值:0x3f 较小值:0x ...