一、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的更多相关文章

  1. Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏

    本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...

  2. Map与Tuple

    一:Map 1.创建一个不可变的map 2.创建一个可变的map 3.创建一个空的map 4.可变map添加一个元素 5.查看一个元素和修改一个元素 6.可变map删除元素 7.不可变map添加一个元 ...

  3. Scala编程入门---Map与Tuple

    创建Map //创建一个不可变的Map val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ...

  4. scala中Map和Tuple

    /** * Created by root * Description : Tuple and Map */ object MapTest { def main(args: Array[String] ...

  5. [Scala]Scala学习笔记三 Map与Tuple

    1. 构造映射 可以使用如下命令构造一个映射: scala> val scores = Map("Alice" -> 90, "Kim" -> ...

  6. 6、scala Map和Tuple

    1.  创建Map 2.访问Map元素 3.修改Map元素的值 4.遍历Map 5.SortedMap和LinkedHashMap 6.Map的元素类型Tuple 1.  创建Map 创建不可变的Ma ...

  7. Scala Map与Tuple

    创建Map // 创建一个不可变的Map val ages = Map("Leo" -> 30, "Jen" -> 25, "Jack&q ...

  8. 3. Map与Tuple

    一. Map 对偶 (1)对偶是一个映射.多个对偶形成map (2)对偶的表示:(k,v)或者k->v Map(哈希类型) (1)map的声明与查询 scala> val map1 = M ...

  9. Scala数据结构(数组,Map和Tuple)

    package com.zy import scala.collection.mutable import scala.collection.mutable.ArrayBuffer object te ...

随机推荐

  1. RSA加密、解密、公钥私钥生成

    有时项目中需要用到一些加密和解密工具,这里之前整理了一个demo,记录一下,方便查询 package com.test; import java.security.KeyFactory; import ...

  2. 点聚-weboffice 6.0 (一)

    WebOffice是一款由北京点聚信息技术有限公司提供的完全免费(商业用途也免费)且功能强大的在线Word/excel/wps编辑辅助控件,可以实现:1.在线编辑Word.Excel.PPT.WPS. ...

  3. php总结1 ——php简介、工作原理、运行环境、文件构成、语法结构、注释

    1.1 PHP  超文本预处理程序.实际就是制作网站的脚本程序 1.2 运行环境: wamp——windowns+apache+mySQL+php    常用于开发.学习和研究 lamp ——linu ...

  4. Linux安装mariadb详细步骤

    1.安装mariadb yum和源码编译安装的区别? 1.路径区别-yum安装的软件是他自定义的,源码安装的软件./configure --preifx=软件安装的绝对路径 2.yum仓库的软件,版本 ...

  5. Django框架创建数据库表时setting文件配置_模型层

    若想将模型转为mysql数据库中的表,需要在settings中配置: 一. 确保配置文件中的INSTALLED_APPS中写入我们创建的app名称-->bms INSTALLED_APPS = ...

  6. 【Android】Android中AlertDialog对话框的使用实例

    package com.ceac.deng; import android.R.string; import android.support.v7.app.ActionBarActivity; imp ...

  7. 开启unity3D的学习之路

    2014年5月11号.我開始了我的Unity3D的学习之路.我将在此记录我学习过程中各个进程,这样在将来的某天,自己忘记了某部分内容时.也能够回过头来复习一下.

  8. python获取当前的时间

    打印出当前的年月日时分秒 print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) 2018-09-05 09:39: ...

  9. PermissionError: [Errno 13] Permission denied:

    在ubuntu系统下使用pip 命令安装包时,出现以下类似错误提示: PermissionError: [Errno 13] Permission denied: '/usr/local/lib/py ...

  10. Java多线程系列 基础篇02 线程的创建和运行

    1.线程创建的方式常用有两种 1. 继承 Thread 类创建线程 2. 实现 Runnable 接口创建线程 2.Thread 和 Runnable的区别 Thread和Runnable的相同点:都 ...