创建Map

//创建一个不可变的Map
val ages = Map("Leo" -> 30,"Jen" ->25,"Jack" ->23)
ages("Leo") =31
//创建一个可变的Map
val ages =scala.collection.mutable.Map("Leo" ->30,"Jen" ->25,"Jack" ->23)
ages("Leo") = 31
//使用另外一种方式定义Map元素
val ages = Map(("Leo",30),("Jen",25),("Jack",23))
//创建一个工的HashMap
val ages = new scala.collection.mutable.HashMap[String,int]

访问Map元素

//获取指定Key对应的value,如果key不存在,会报错
val leoAge = ages("Leo")
val leoAge = ages("leo") //使用contains函数检查key是否存在
val leoAge = if(ages.contains("leo")) ages("leo") else 0 //getOrElse函数
val leoAge = ages.getOrElse("leo",0)

修改Map的元素

//更新Map的元素

ages("leo") =31

//增加多个元素

ages +=("Mike" -> 35,"Tom" 0> 40)

//移除元素

ages -="Mike"

//更新不可变的map

val ages2 = ages +("Mike" -> 36,"Tom" ->40)

//移除不可变的元素

val ages3 = ages-"Tom"

遍历Map

//遍历map的entrySet
for ((key,value) <- ages) printlin(key+"" +value)
//遍历Map的Key
for(key <-ages.keySet) println(key)
//遍历Map的value
for(value <- ages.value ) println(value)
//生成新map,反转Key和value
for((key,value) <- ages) yield (value,key)

Map的排序

//sortedMap可以自动对Map的可以排序
val ages = scala.collection.immutable.SortedMap("leo" ->30,"alice" ->15,"jen" ->25)
//LinkedHashMap可以记住插入entry的顺序
val ages =new scala.collection.mutable.LinkedHashMap[String,int]
ages("leo")= 30
ages("alice")=15
ages("jen")=25

Tuple

//简单Tuple
val t =("leo",30)
//访问Tuple
t._1 //zip操作
val names =Array("leo","jack"," mike")
val ages = Array(30,23,26)
val nameAges = names.zip(ages)
for((name,age) <- nameAges) println(name +":"+age)

Scala编程入门---Map与Tuple的更多相关文章

  1. Scala编程入门---函数式编程

    高阶函数 Scala中,由于函数时一等公民,因此可以直接将某个函数传入其他函数,作为参数.这个功能是极其强大的,也是Java这种面向对象的编程语言所不具备的. 接收其他函数作为函数参数的函数,也被称作 ...

  2. Scala编程入门---函数式编程之集合操作

    集合的函数式编程: 实战常用: //map案例实战:为List中的每个元素都添加一个前缀. List("leo","Jen","peter" ...

  3. Scala编程入门---数组操作之数组转换

    使用yield和函数式编程转换数组 //对Array进行转换,获取的还是Aarry val a = Array(1,2,3,4,5) val a2 = for(ele <- a) yield e ...

  4. Scala编程入门---面向对象编程之Trait高级知识

    trait调用链 Scala中支持让类继承多个Trait后,依次调用多个Trait中的同一个方法,只要让多个trait的同一个方法中,在最后都执行super.方法即可 类中调用多个trait中都有这个 ...

  5. Scala编程入门---面向对象编程之Trait

    Scala中Trait是一种特殊概念 首先我们可以将Triat做为接口来使用,此时的Triat就与java中的接口非常相似 在Triat中可以定义抽象方法,就与抽象类中的抽象方法一样,只要不给出具体的 ...

  6. Scala编程入门---面向对象编程之对象

    对象 Object,相当于class单个实例,通常在里面放一些静态的filed或method 第一次调用object方法时候,就会执行object的constructor,也就是Object中不在me ...

  7. Scala编程入门---数组操作之Array.ArrayBuffer以及遍历数组

    在Scala中,Array代表的含义与Java类似,也是长度不可改变的数组.此外,由于Scala与java都是运行在JVM中,双方可以互相调用,因此Scala数组底层实际上是java数组.列如字符串数 ...

  8. Scala编程入门---函数过程,Lazy值和异常

    过程: 在Scala中,定义函数时,如果函数体直接包裹在花括号里面,而没有使用=连接,则函数的返回值类型就是Unit.这样的函数就被称之为过程. 过程通常用于不需要返回值类型的函数. 过程还有一种写法 ...

  9. (升级版)Spark从入门到精通(Scala编程、案例实战、高级特性、Spark内核源码剖析、Hadoop高端)

    本课程主要讲解目前大数据领域最热门.最火爆.最有前景的技术——Spark.在本课程中,会从浅入深,基于大量案例实战,深度剖析和讲解Spark,并且会包含完全从企业真实复杂业务需求中抽取出的案例实战.课 ...

随机推荐

  1. jsoup详解

    json相信大家都用的多,jsonp我就一直没有机会用到,但也经常看到,只知道是"用来跨域的",一直不知道具体是个什么东西.今天总算搞明白了.下面一步步来搞清楚jsonp是个什么玩 ...

  2. 小强的HTML5移动开发之路(17)——HTML5内联SVG

    来自:http://blog.csdn.net/dawanganban/article/details/18189181 一.什么是SVG 可缩放矢量图形是基于可扩展标记语言(标准通用标记语言的子集) ...

  3. PKU 3468 A Simple Problem with Integers

    题目大意: 有N,M两个数 Q 表示查询, 后面两个数a b,表示查询从a 到b计算它们的和 C 表示增加   后面三个数a,b,c 表示从a开始,一直到b,每个数都增加c 除了查询要进行输出,增加不 ...

  4. python的map

    map(function, iterable, ...) 将function放到迭代的每个元素执行,结果为list. 引自>:http://my.oschina.net/zyzzy/blog/1 ...

  5. Linux管道编程实例

    /*管道 可以把管道想象为两个实体之间的单向连接器.注意,管道是半双工的, 如果需要全双工通讯,应该转而考虑套接字. 匿名管道又称管道,提供了一个进程与它的兄弟进程通讯的方法,只存在于父进程中: 命名 ...

  6. kettle简介(整体架构,运行方式,使用方法)

    项目负责人Matt的说法:把各种数据放到一个壶里,然后呢,以一种你希望的格式流出.呵呵,外国人都很有联想力.看了提供的文档,然后对发布程序的简单试用后,可以很清楚得看到Kettle的四大块: Chef ...

  7. BDA大数据处理流程

    可以看出,数据处理用云,可以高效完成.而分析部分应该利用传统的bi工具.

  8. Camera 涉及的文件70

    点击打开链接 Camera 涉及的文件 1.上电时序 Mediate/custom/$PROJECT/Camera/Camera/kd_camera_hw.c Mediate/custom/$PROJ ...

  9. SpriteBuilder中的CCSprite9Slice是个什么鬼?

    CCSprite大家都知道,但是加上后面那一串又变成了神马呢? 我们可以首先到官方的API文档网站查一下,如下: http://www.cocos2d-swift.org/docs/api/Class ...

  10. vim多行增加缩进

    http://blog.163.com/clevertanglei900@126/blog/static/11135225920116891750734/ 在Normal Mode下,命令>&g ...