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、 有序映射

SortedMap、LinkedHashMap

元组

元组是不同类型的值的聚集,对偶是元组的最简单的实现

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映射和元组的更多相关文章

  1. Scala映射与元组篇

    *Scala有十分易用的语法来创建.查询和便利映射 *你需要从可变的和不可变的映射中做出选择 *默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射 *你可以很容易地在Scala映射和Jav ...

  2. 【scala】 scala 映射和元组操作(四)

    1.映射  Map 定义 ,取值,遍历,排序 2. 元组 定义,取值,拉链操作 import scala.collection.mutable /** * 映射和元组 * * @author xwol ...

  3. Scala从入门到精通之四-映射和元组

    在Scala中映射之键值对的集合,元组是n个对象的聚集,但是对象的类型不一定相同 本节内容要点 Scala中映射的创建,遍历和查询 如何从可变和不可变映射中做出选择 Scala映射和Java映射见的互 ...

  4. Scala学习(四)---映射和元组

    映射和元组 摘要: 一个经典的程序员名言是:"如果只能有一种数据结构,那就用哈希表吧".哈希表或者更笼统地说映射,是最灵活多变的数据结构之一.映射是键/值对偶的集合.Scala有一个通用的叫法:元组, ...

  5. 快学Scala习题解答—第四章 映射和元组

    4 映射和元组  4.1 设置一个映射,当中包括你想要的一些装备,以及它们的价格.然后构建还有一个映射.採用同一组键,可是价格上打9折 映射的简单操作  ,"gun"->18 ...

  6. Scala的映射和元组操作

    映射和元组操作 构造Map // 构造一个不可变的MAP映射,类似与key -> value这样的组合叫做对偶 val score = Map("Jack" -> 12 ...

  7. scala学习笔记(4)映射和元组

    1.构造映射 //构造这样的一个映射 val sources=Map(,,) //构造了一个不可变的Map[String,Int],值不能改变, //可变映射 val scores = new sca ...

  8. Scala从入门到放弃(三)Scala的数组、映射、元组和集合

    1.数组 1.1定长数组和变长数组 object ArrayDemo { def main(args: Array[String]): Unit = { //初始化一个长度为8的定长数组,其数组元素均 ...

  9. 学好Spark/Kafka必须要掌握的Scala技术点(一)变量、表达式、循环、Option、方法和函数,数组、映射、元组、集合

    前言 Scala是以JVM为运行环境的面向对象的函数式编程语言,它可以直接访问Java类库并且与Java框架进行交互操作.正如之前所介绍,Spark是用Scala语言编写的,Kafka server端 ...

随机推荐

  1. 任务四:CSS定位和居中问题

    任务目标 实践HTML/CSS布局方式 深入了解position等CSS属性 任务描述 实现如 示例图(点击打开) 的效果 灰色元素水平垂直居中,有两个四分之一圆位于其左上角和右下角. 任务注意事项 ...

  2. Spring MVC工程 无法拦截到url请求

    一直没有办法拦截到url的请求,tomcat启动也没有看到Springmvc容器启动的任何说明.所以就建立了一个普通的servlet工程,可以访问url.再重新发布springmvc项目,访问url, ...

  3. 【Leetcode】【Medium】Single Number II

    Given an array of integers, every element appears three times except for one. Find that single one. ...

  4. Selenium2学习(九)-- 多窗口,句柄(handle)

    前言 有些页面的链接打开后,会重新打开一个窗口,对于这种情况,想在新页面上操作,就得先切换窗口了.获取窗口的唯一标识用句柄表示,所以只需要切换句柄,我们就能在多个页面上灵活自如的操作了. 一.认识多窗 ...

  5. ubuntu 18 环境下使用 @vue-cli 3.2 新建 vue 项目

    ubuntu 18 环境下使用 @vue-cli 3.2 新建 vue 项目 标签(空格分隔): Vue 首先安装全局@vue-cli工具: npm install -g @vue/cli 然后创建项 ...

  6. 建立virtualenv环境

    建立virtualenv环境 virtualenv --no-site-packages yourenv 其中,yourenv是给环境起的名称 --no-site-packages表示安装的pytho ...

  7. 什么是SWP文件?能否删除swp文件?

    SWP意思就是交换文件..SWP是各种操作系统(Windows或Linux)使用的交换文件的文件扩展名. 可以安全地清理SWP文件以释放磁盘空间. 要清理SWP文件,请按照以下步骤操作: 运行WinU ...

  8. Java Android 32位16位 MD5加密

    // md5加密 32位小写 private String Md5(String sourceStr) { String result = ""; try { MessageDig ...

  9. 【Unity3D】【NGUI】UIRect的Anchor的使用

    NGUI版本号:3.6.5 以以下的图,解释下主要的Anchors的使用(能够通过官方的Anchor和Chat样例进行深入学习) Target不是一定要是Sprite.能够是随意的UIRect(UIS ...

  10. PIL 图像字符画绘制

    from PIL import Image ascii_char = list('"$%_&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]? ...