4、map和Tuple
一、map
1、创建map
//创建一个不可变的Map
scala> val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23) //创建一个可变的Map
scala> val ages = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Jack -> 23, Leo -> 30) scala> ages("Leo") = 31 scala> ages
res5: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Jack -> 23, Leo -> 31) //使用另外一种方式定义Map元素
scala> val ages = Map(("Leo",30),("Jen",25),("Jack",23))
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23) //创建一个空的HashMap
scala> val ages = new scala.collection.mutable.HashMap[String, Int]
ages: scala.collection.mutable.HashMap[String,Int] = Map()
2、访问Map的元素
##获取指定key对应的value,如果key不存在,会报错
scala> val ages = Map(("Leo",30),("Jen",25),("Jack",23))
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23) scala> val age = ages("Leo")
age: Int = 30 ##使用contains判断key是否存在
scala> val age = if (ages.contains("Leo")) ages("Leo") else 0
age: Int = 30 ##getOrElse函数判断key是否存在
scala> val age = ages.getOrElse("Leo",0)
age: Int = 30
3、修改Map的元素
##更新Map的元素
scala> val ages = scala.collection.mutable.Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Jack -> 23, Leo -> 30) scala> ages("Leo") = 31 scala> ages("Leo")
res3: Int = 31 ##增加多个元素
scala> ages += ("Mike" -> 35, "Tom" -> 40)
res4: ages.type = Map(Jen -> 25, Mike -> 35, Tom -> 40, Jack -> 23, Leo -> 31) scala> ages
res5: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Mike -> 35, Tom -> 40, Jack -> 23, Leo -> 31) ##移除元素
scala> ages -= "Mike"
res6: ages.type = Map(Jen -> 25, Tom -> 40, Jack -> 23, Leo -> 31) scala> ages
res7: scala.collection.mutable.Map[String,Int] = Map(Jen -> 25, Tom -> 40, Jack -> 23, Leo -> 31) ##更新不可变的map
scala> val ages2 = ages + ("Mike" -> 36, "Tom" -> 40)
ages2: scala.collection.immutable.Map[String,Int] = Map(Mike -> 36, Tom -> 40, Leo -> 30, Jack -> 23, Jen -> 25) scala> ages2
res0: scala.collection.immutable.Map[String,Int] = Map(Mike -> 36, Tom -> 40, Leo -> 30, Jack -> 23, Jen -> 25) ##移除不可变map的元素
scala> val ages3 = ages - "Tom"
ages3: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23) scala> ages3
res1: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23)
4、遍历map
##遍历map的entrySet
scala> val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack" -> 23)
ages: scala.collection.immutable.Map[String,Int] = Map(Leo -> 30, Jen -> 25, Jack -> 23) scala> for ((key, value) <- ages) println(key + ":" + value)
Leo:30
Jen:25
Jack:23 ##遍历map的key
scala> for (key <- ages.keySet) println(key)
Leo
Jen
Jack ##遍历map的value
scala> for (value <- ages.values) println(value)
30
25
23 ##生成新map,反转key和value
scala> for ((key, value) <- ages) yield (value, key)
res8: scala.collection.immutable.Map[Int,String] = Map(30 -> Leo, 25 -> Jen, 23 -> Jack)
5、SortedMap和LinkedHashMap
##SortedMap可以自动对Map的key的排序
scala> val ages = scala.collection.immutable.SortedMap("Leo" -> 30,"Alice" -> 15, "Jen" -> 25)
ages: scala.collection.immutable.SortedMap[String,Int] = Map(Alice -> 15, Jen -> 25, 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("Alice") = 25 scala> ages("Jen") = 26 scala> ages
res12: scala.collection.mutable.LinkedHashMap[String,Int] = Map(Leo -> 30, Alice -> 25, Jen -> 26)
二、Tuple
map的元素类型Tuple
1、定义、访问Tuple
##定义
scala> val t = ("leo", 30, "Jen")
t: (String, Int, String) = (leo,30,Jen) ##访问
scala> t._1
res15: String = leo scala> t._2
res16: Int = 30 scala> t._3
res17: String = Jen ##zip操作
scala> val names = Array("leo","jack","mike")
names: Array[String] = Array(leo, jack, mike) scala> val ages = Array(30,25,27)
ages: Array[Int] = Array(30, 25, 27) scala> val nameages = names.zip(ages)
nameages: Array[(String, Int)] = Array((leo,30), (jack,25), (mike,27)) scala> for ((name, age) <- nameages) println(name + ": " + age)
leo: 30
jack: 25
mike: 27
4、map和Tuple的更多相关文章
- Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏
本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...
- Map与Tuple
一:Map 1.创建一个不可变的map 2.创建一个可变的map 3.创建一个空的map 4.可变map添加一个元素 5.查看一个元素和修改一个元素 6.可变map删除元素 7.不可变map添加一个元 ...
- Scala编程入门---Map与Tuple
创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...
- scala中Map和Tuple
/** * Created by root * Description : Tuple and Map */ object MapTest { def main(args: Array[String] ...
- [Scala]Scala学习笔记三 Map与Tuple
1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...
- 6、scala Map和Tuple
1. 创建Map 2.访问Map元素 3.修改Map元素的值 4.遍历Map 5.SortedMap和LinkedHashMap 6.Map的元素类型Tuple 1. 创建Map 创建不可变的Ma ...
- Scala Map与Tuple
创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...
- 3. Map与Tuple
一. Map 对偶 (1)对偶是一个映射.多个对偶形成map (2)对偶的表示:(k,v)或者k->v Map(哈希类型) (1)map的声明与查询 scala> val map1 = M ...
- Scala数据结构(数组,Map和Tuple)
package com.zy import scala.collection.mutable import scala.collection.mutable.ArrayBuffer object te ...
随机推荐
- Selenium 我的自动化测试历程 (Selenium+TestNG+Java+ReportNG+Jenkins)
测试环境:Java+Selenium+TestNG,Jenkins持续集成. 测试代码 代码结构 采用页面对象模型(Page Object),减少UI修改后,对代码的影响. Java编写,采用Te ...
- EasyNVR无插件播放HLS/RTMP网页直播方案前端完善:监听表单变动
在上一篇博客中我们表述完了防止提交成功后多余操作提交的一个过程:其中的精髓在于ajax的触发事件的使用. 而这篇博客主要想说明一下如何实时的判断出表单是否发生变化. 问题表述: 在网页前端的开发过程中 ...
- js闭包实际用途
闭包例:防止双击 在线商店的购物车里,为防止“多重购买”,需要防止按钮被双击. 下面用“jQuery + 闭包”来实现这一功能. HTML <form name="frm" ...
- Swift 学习笔记 (解决Swift闭包中循环引用的三种方法)
话不多说 直接上代码 class SmartAirConditioner { var temperature:Int = //类引用了函数 var temperatureChange:((Int)-& ...
- Java集合(一):Java集合概述
注:本文基于JDK 1.7 1 概述 Java提供了一个丰富的集合框架,这个集合框架包括了很多接口.虚拟类和实现类. 这些接口和类提供了丰富的功能.可以满足主要的聚合需求. 下图就是这个框架的总体结构 ...
- django mysql setting 设置
django mysql setting django mysql 设置 DATABASES = { 'default': { 'ENGINE': 'django.db.back ...
- Map总结--HashMap/HashTable/TreeMap/WeakHashMap使用场景分析(转)
首先看下Map的框架图 1.Map概述 1.Map是键值对映射的抽象接口 2.AbstractMap实现了Map中绝大部分的函数接口,它减少了“Map实现类”的重复编码 3.SortedMap有序的“ ...
- High Performance Browser Networking
Chapter 1. Primer on Latency and Bandwidth As a result, to improve performance of our applications, ...
- eslint 配合 git (husky)
为了保证每次提交的 git 代码是正确的,为此我们可以使用 eslint 配合 git hook, 在进行git commit 的时候验证eslint规范 如果 eslint 验证不通过,则不能提交. ...
- 只会用就out了,手写一个符合规范的Promise
Promise是什么 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果.从语法上说,Promise 是一个对象,从它可以获取异步操作的消息.Prom ...