Scala入门系列(四):Map & Tuple
Map
- 创建Map
// 创建一个不可变的Map
scala> val ages = Map("Leo" -> 30, "Sparks" -> 25)
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Sparks -> 25)
// 创建一个可变的Map
scala> val ages = scala.collection.mutable.Map("Leo" -> 20, "JEN" -> 23)
ages: scala.collection.mutable.Map[String,Int] = Map(JEN -> 23, Leo -> 20)
scala> ages("Leo") = 31
// 使用另外一种方式定义Map元素
scala> val ages = Map(("leo", 30), ("sparks", 20))
ages: scala.collection.immutable.Map[String,Int] = Map(leo -> 30, sparks -> 20)
// 创建一个空的HashMap,必须是实现类而不是抽象接口
scala> val ages = new scala.collection.mutable.HashMap[String, Int]
ages: scala.collection.mutable.HashMap[String,Int] = Map()
- 访问Map元素
// 使用contains函数检查key是否存在
scala> val leoAge = if (ages.contains("Leo")) ages("Leo") else 0
leoAge: Int = 0
// getOrElse函数
scala> val leoAge = ages.getOrElse("Leo", 0)
leoAge: Int = 0
- 修改Map元素
// 添加或者更新元素
scala> ages("Leo") = 31
// 添加多个元素
scala> ages += ("Mike" -> 34, "Tom" -> 40)
// 移除元素
scala> ages -= "Mike"
// 变相更新不可变map
scala> val ages2 = ages + ("Mike" -> 34, "Tom" -> 40)
- 遍历Map
// 遍历map的entrySet
scala> for((key, value) <- ages) println(key + " " + value)
// 遍历key
scala> for(key <- ages.keySet) println(key)
// 遍历value
scala> for(value <- ages.values) println(value)
// 生成新map,反转key和value
scala> for((key, value) <- ages) yield (value, key)
- SortedMap & LinkedHashMap
// SortedMap可以自动对Map的key排序,按照字母顺序
scala> val ages = scala.collection.immutable.SortedMap("leo" -> 30, "alice" -> 15)
ages: scala.collection.immutable.SortedMap[String,Int] = Map(alice -> 15, leo -> 30)
// LinkedHashMap可以记住插入entry的顺序
scala> val ages = new scala.collection.mutable.LinkedHashMap[String,Int]
ages: scala.collection.mutable.LinkedHashMap[String,Int] = Map()
scala> ages("leo") = 30
scala> ages("Sparks") = 20
scala> ages
res70: scala.collection.mutable.LinkedHashMap[String,Int] = Map(leo -> 30, Sparks -> 20)
元组Tuple
Scala元组将固定数量的项目组合在一起,以便它们可以作为一个整体传递。 与数组或列表不同,元组可以容纳不同类型的对象,但它们也是不可变的。(可以用作自定义数据类型)
// 创建Tuple
scala> val t = ("leo", 30, "hello")
t: (String, Int, String) = (leo,30,hello)
// 访问Tuple
scala> t._1
// zip操作
scala> val names = Array("leo", "jack", "mike")
names: Array[String] = Array(leo, jack, mike)
scala> val ages = Array(30, 24, 25)
ages: Array[Int] = Array(30, 24, 25)
scala> val nameAges = names.zip(ages)
nameAges: Array[(String, Int)] = Array((leo,30), (jack,24), (mike,25))
scala> for ((name, age) <- nameAges) println(name + ":" + age)
leo:30
jack:24
mike:25
Scala入门系列(四):Map & Tuple的更多相关文章
- C语言高速入门系列(四)
C语言高速入门系列(四) C语言数组 ---------转载请注明出处:coder-pig 贴心小提示:假设图看不清晰可右键另存为,应该就非常清晰了; 注意上面的代码都要自己过一遍哦! 本节引言: 经 ...
- [转]C# 互操作性入门系列(四):在C# 中调用COM组件
传送门 C#互操作系列文章: C# 互操作性入门系列(一):C#中互操作性介绍 C# 互操作性入门系列(二):使用平台调用调用Win32 函数 C# 互操作性入门系列(三):平台调用中的数据封送处理 ...
- Go语言入门系列(四)之map的使用
本系列前面的文章: Go语言入门系列(一)之Go的安装和使用 Go语言入门系列(二)之基础语法总结 Go语言入门系列(三)之数组和切片 1. 声明 map是一种映射,可以将键(key)映射到值(val ...
- Spark RDD/Core 编程 API入门系列之map、filter、textFile、cache、对Job输出结果进行升和降序、union、groupByKey、join、reduce、lookup(一)
1.以本地模式实战map和filter 2.以集群模式实战textFile和cache 3.对Job输出结果进行升和降序 4.union 5.groupByKey 6.join 7.reduce 8. ...
- Scala入门系列(五):面向对象之类
定义类 // 定义类,包含field以及method class HelloWorld { private var name = "Leo" def sayHello() { pr ...
- Scala入门系列(九):函数式编程
引言 Scala是一门既面向对象,又面向过程的语言,Scala的函数式编程,就是Scala面向过程最好的佐证.也真是因此让Scala具备了Java所不具备的更强大的功能和特性. 而之所以Scala一直 ...
- spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
- Scala入门系列(十):函数式编程之集合操作
1. Scala的集合体系结构 Scala中的集合体系主要包括(结构跟Java相似): Iterable(所有集合trait的根trait) Seq(Range.ArrayBuffer.List等) ...
随机推荐
- struts2国际化相关问题
国际化资源文件的方式: Action范围的 包范围的 临时的 全局的(推荐) 一.配置全局的国际化资源文件 1.在类路径下,创建国际化资源文件 baseName.properties baseName ...
- 简易RPC框架-上下文
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- Java基础——输入输出
在程序最开始 import java.util.*; 因为Scanner类定义在java.util包中. 读取输入: 先构造一个Scanner对象,并与"标准输入流"System ...
- Lua 5.3 协程简单示例
Lua 5.3 协程简单示例 来源 http://blog.csdn.net/vermilliontear/article/details/50547852 生产者->过滤器->消费者 模 ...
- 【Aladdin Unity3D Shader编程】之一 基本入门
OpenGL.DirectX以及GLSL.HLSL.CG OpenGL和DirectX是图像应用编程接口,用于渲染二维或者三维图形. GLSL着色语言是用来在OpenGL中着色编程的语言,有点在于跨平 ...
- CLR Via C#: 类型基础
所有类型都从System.Object派生 一下两个类型定义是完全一致的 class Employee { } class Employee : System.Object { } 由于所有类型最终都 ...
- 如何运用GitHub来提高生产效率
这是一篇GitHub的入门级文章,主要针对git的初学者.我们将讨论初学者最关心的一些问题,如:为什么我们要使用GitHub,它的应用有哪些,如何运用它去帮助我们提高工作效率,以及它的基本用法有哪些. ...
- JSON相关知识整理
JSON 全称:JavaScript Object Notation ,一种轻量级的数据交换格式 示例:{"name":"eric","age&q ...
- Java微信公众平台开发_06_素材管理
一.本节要点 1.官方文档的media 这个media可以理解为文件,即我们需要以POST方式提交一个文件 2.媒体文件有效期 媒体文件在微信后台保存时间为3天,即3天后media_id失效. 二.代 ...
- java 导出blob图片到excel
实现功能,导出当前页面显示员工的图片,核心代码已给出,仅供参考, 如需转载请注明出处http://www.cnblogs.com/wangjianguang/p/7852060.html 随便再扯2句 ...