Scala学习四——映射和数组
一.本章要点
- Scala有十分易用的语言来创建,查询和遍历映射
- 你需要从可变和不可变的映射中做出选择
- 默认情况下,你得到的是一个哈希映射,不过你也可以指明要树形映射
- 你可以很容易地在Scala映射和Java映射之间来回切换
- 元祖可以用来聚集值
二.构造映射(哈希表)
构造不可变映射:
val scores=Map("Alice"->100,"Bob"->3,"Cindy"->8)
构造可变映射:
val scores=scala.collection.multable.Map("Alice"->10,"Bob"->3,"Cindy->8")
构造空映射:
val scores=scala.collection.multable.Map(String,Int)
注:也可以使用()替换->
三.获取映射中的值
使用()获取,如果没有该键会抛出异常,使用contains方法检查是否包含某个键,可以使用getOrElse方法获取。
四.更新映射中的值
可变映射:
直接更新:scores("Bob")=20
没有该键则增加新的值:scores("LYQ")=100
通过+=添加多个关系:scores+=("Bob"->11,"Fed"->23)
通过-=移除:scores-="Bob"
不可变映射:
可以获取包含所需要的更新的新映射:val newScores=scores+("Bob"->10,"Fed"->22)
通过-获取一个新的去掉该键的值:scores-=scores-"Alice"
五.迭代映射
迭代键值:for((k,v)<-映射) 处理k,v;
只处理键:scores.keySet();
只处理值:scores.values
六.已排序映射
不可变树形映射:val scores=scala.collections.immutable.SortedMap("Alice"->10,"Fred"->6,"Bob"->9)
可变的树形结构(Scala目前没有):可以用Java的TreeMap
按插入顺序访问所有键:val months=scala.collections.mutable.LinkedHashMap(.....)
七.与Java的互操作
八.元组
元组是不对类型的值的聚集,如(1,3.14,”Fred“)类型为Tuple3(Int,Double,java.lang.String),可以通过_1,_2,_3依次递增访问组元(如t._1,也可以把.替换为空格),也可以使用模式匹配获取元组组元(如:val (first,second,third)=t)。
九.拉链操作
如果有一个键的集合以及与之对应的值的集合,就可以使用拉链操作把它组合成一个映射:
keys.zip(values).toMap
十.练习
Scala学习四——映射和数组的更多相关文章
- Scala学习(四)---映射和元组
映射和元组 摘要: 一个经典的程序员名言是:"如果只能有一种数据结构,那就用哈希表吧".哈希表或者更笼统地说映射,是最灵活多变的数据结构之一.映射是键/值对偶的集合.Scala有一个通用的叫法:元组, ...
- Scala学习(四)练习
映射和元组&练习 1. 设置一个映射,其中包含你想要的一些装备,以及它们的价格.然后构建另一个映射,采用同一组键,但在价格上打9折 映射代码如下: object HelloScala{ def ...
- Scala学习 —— 元组&映射
再说集合之前,我们先来回顾一下映射&元祖 映射是键/值对偶的集合,Scala有一个通用的叫法--元组,也就是n个对象的聚集,并不一定要相同类型的.对偶不过是一个n=2的元祖.元祖对于那种需要将 ...
- Scala学习——数组/映射/元组
[<快学Scala>笔记] 数组 / 映射 / 元组 一.数组 1.定长数组 声明数组的两种形式: 声明指定长度的数组 val 数组名= new Array[类型](数组长度) 提供数组初 ...
- Scala学习(三)----数组相关操作
数组相关操作 摘要: 本篇主要学习如何在Scala中操作数组.Java和C++程序员通常会选用数组或近似的结构(比如数组列表或向量)来收集一组元素.在Scala中,我们的选择更多,不过现在我们先假定不 ...
- scala学习之第三天:数组的特性与使用技巧
1.数组 Scala数组与Scala序列是兼容的 - 在需要Seq[T]的地方可由Array[T]代替.最后,Scala数组支持所有的序列操作. 隐式转换 方法1:通过scala.collection ...
- [Scala]Scala学习笔记二 数组
1. 定长数组 如果你需要一个长度不变的数组,可以使用Scala中的Array. val nums = new Array[Int](10) // 10个整数的数组 所有元素初始化为0 val str ...
- NumPy 学习 第四篇:数组的基本操作
在数组中,用axis(轴)表示维度,对于三维数组,axis参数的取值通常有: 当axis=None时,表示把数组展开为一维数组: 当axis=0时,表示按照行(第一维)进行计算: 当axis=1时,表 ...
- 【大数据】Scala学习笔记
第 1 章 scala的概述1 1.1 学习sdala的原因 1 1.2 Scala语言诞生小故事 1 1.3 Scala 和 Java 以及 jvm 的关系分析图 2 1.4 Scala语言的特点 ...
随机推荐
- centos7下面装fastdfs
首先我完全是按照这个链接上面来的,其中也算有点小错https://blog.csdn.net/ty5546/article/details/79245648 环境准备编译环境 yum install ...
- CSS 实现对号效果
实现对号效果,一种思路是利用现成的符号,直接在网上搜索到 √,插入页面.另一种思路是本文要介绍的用 CSS 实现,思路是: 给块级元素设置宽度和高度 设置元素相邻的两个 border 旋转元素 HTM ...
- centOS7搭建hadoop,zookeeper,hbase
1.配置ssh免密登录 (本人使用的是centOS7虚拟机) (本人未在root用户下安装,建议使用root用户,不然很麻烦!!) ① 本机无密钥登录 1.进入~/.ssh目录(若无,则执行一次ssh ...
- 转载: Windows下两种iocp实现的差距
转自:http://blog.csdn.net/oldworm/article/details/6171430 之前几天说过,因为经典iocp实现(以下简称经典实现)多个io线程绑定在一个iocp上, ...
- HearthBuddy DONOTDELETE.bin
namespace Hearthbuddy{ // Token: 0x02000022 RID: 34 public class App : System.Windows.Applicat ...
- 1.4 Go语言基础之流程控制
流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的"经脉". Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码. ...
- 齐普夫-Zipf定律
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频)https://study.163.com/course/introduction.htm?courseId=1005269003&ut ...
- idea git操作 -- 已有项目添加到git
我们在使用git时,如果是先从git克隆项目,然后配置项目运行没问题,如果将已有项目添加到git,则项目环境还是提交不了git,还需要到克隆的仓库文件夹打开项目去操作git,如果有有类型情况可按照如下 ...
- ResourceUtils 创建资源目录工具类
package com.jcf.utilsdemo; import android.content.Context; import android.content.res.Resources; pub ...
- linux备忘和卸载
linux上网 -------------------------------------------------linux卸载------------------------------------ ...