1. 映射

映射Java中的Map,即Key/Value的数据形式

  • 映射的创建,有以下两种方法

     scala> val map =Map("Lisa" -> 90 , "Hellen" -> 89)
    map: scala.collection.immutable.Map[String,Int] = Map(Lisa -> 90, Hellen -> 89) scala> val map =Map("Lisa" -> 90 , "Hellen" -> 89)
    map: scala.collection.immutable.Map[String,Int] = Map(Lisa -> 90, Hellen -> 89)
  •  映射内容的修改

      scala中的映射分为可变和不可变的,由import的包决定;默认引入scala.collection.immutable.Map的包;

      scala.collection.immutable.Map是不可变的;不可改变已有的Key值的Value,亦不可增加键值对

     scala> map
    res44: scala.collection.immutable.Map[String,Int] = Map(Lisa -> 90, Hellen -> 8) scala> map("Lisa") =100
    <console>:15: error: value update is not a member of scala.collection.immutable
    Map[String,Int]
    map("Lisa") =100
    ^ scala> map("Bob") =100
    <console>:15: error: value update is not a member of scala.collection.immutable
    Map[String,Int]
    map("Bob") =100

     scala.collection.mutable.Map这个包的Map是可变的;

     scala> import scala.collection.mutable.Map
    import scala.collection.mutable.Map scala> val map2 = Map("Lisa"-> 95,"Helln"-> 85)
    map2: scala.collection.mutable.Map[String,Int] = Map(Lisa -> 95,Helln -> 85) scala> map2("Lisa")=100 scala> map2
    res49: scala.collection.mutable.Map[String,Int] = Map(Lisa -> 100,Helln -> 85) scala> map2 += ("Bob" -> 65)
    res50: map2.type = Map(Bob -> 65, Lisa -> 100, Helln -> 85) scala> map2 += (("Bob",80))
    res52: map2.type = Map(Bob -> 80, Lisa -> 100, Helln -> 85)

    getOrElse(Key,defaultValue),取Map中的相应的Key的Value值,若不存在,则返回默认值;值得注意的是并没有在Map的添加该记录

     scala> map2.getOrElse
    getOrElse getOrElseUpdate scala> map2.getOrElse("Alice",60)
    res53: Int = 60 scala> map2
    res54: scala.collection.mutable.Map[String,Int] = Map(Bob -> 80, Lisa -> 100, Helln -> 85)

2. 元组

映射是K/V对偶的集合,对偶是元组的最简单形式,元组可以装着多个不同类型的值;Map可以看做是装了对偶元组的集合

  • 元组的创建

     scala> val y =(1,"Lisa",90)
    y: (Int, String, Int) = (1,Lisa,90)
  • 元组的取值,角标从1开始
     scala> y._1
    res56: Int = 1 scala> y._2
    res57: String = Lisa scala> y._3
    res58: Int = 90

3. 集合

Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质

在Scala中集合有可变(mutable)和不可变(immutable)两种类型

3.1 序列

不可变:List

可变:ListBuffer

Scala学习笔记(五)—— 元组和集合的更多相关文章

  1. PYTHON 学习笔记3 元组、集合、字典

    前言 在上一节的学习中.学习了基本的流程控制语句,if-elif-else for while 等,本节将拓展上一节学习过的一些List 列表当中操作的一些基本方法,以及元祖.序列等. 列表扩展 我们 ...

  2. scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例

    package yjmyzz import java.io.PrintWriter import java.util.Date import scala.io.Source object ScalaA ...

  3. scala 学习笔记十 元组

    1.元组初始化 2.元组作为函数返回值 3.元组拆包 上面168行 ,单个val后面跟着一个由五个标识符构成的元组,表示对ff返回的元组进行拆包 上面174行,将整个元组捕获到单个val或var中,那 ...

  4. scala学习笔记:理解并行集合par

    scala> (1 to 5).foreach(println(_)) 1 2 3 4 5 scala> (1 to 5).par.foreach(println(_)) 3 1 4 2 ...

  5. [Scala]Scala学习笔记五 Object

    1. 单例对象 Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber = 0 ...

  6. scala 学习笔记五 foreach, map, reduce

    例子 val v = Vector(,,,) ) println(s) //输出:Vector(2, 4, 6, 8) val v2 = Vector(,,,) var v3 = v2.reduce( ...

  7. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  8. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  9. Linux学习笔记(五) 账号管理

    1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...

  10. Scala学习笔记及与Java不同之处总结-从Java开发者角度

    Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...

随机推荐

  1. Mysql学习---视图/触发器/存储过程/函数/执行计划/sql优化 180101

    视图 视图: 视图是一个虚拟表(非真实存在),动态获取数据,仅仅能做查询操作 本质:[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用.由 ...

  2. Oracle 死锁处理

    一.数据库死锁的现象程序在执行的过程中,点击确定或保存按钮,程序没有响应,也没有出现报错.二.死锁的原理当对于数据库某个表的某一列做更新或删除等操作,执行完毕后该条语句不提交,另一条对于这一列数据做更 ...

  3. 有趣的IntegerCache

    一个很有趣的现象,下面这两个结果输出的结果是false true,这是为什么?   翻看Integer的源码可以看到,当new Integer(12);时,没有什么特别的,就是通过构造方法创建了一个I ...

  4. codechef Transform the Expression 转换成逆波兰式

    版权声明:本文作者靖心,靖空间地址:http://blog.csdn.net/kenden23/.未经本作者同意不得转载. https://blog.csdn.net/kenden23/article ...

  5. 实现websocket

    转:http://www.cnblogs.com/dolphinX/p/3462898.html 在之前的博客中提到过看到html5 的websocket后很感兴趣,终于可以摆脱长轮询(websock ...

  6. vector size函数使用注意事项

    vector 的size函数返回vector大小,返回值类型为size_type,Member type size_type is an unsigned integral type,即无符号整数: ...

  7. es6之函数扩展与对象扩展

    一.函数扩展 1.参数默认值 参数有默认值,后面不可以再加没有默认值的变量.如以下test函数中,不可以加写成 function test(x,y="word",z){ } fun ...

  8. PAT——1045. 快速排序

    著名的快速排序算法里有一个经典的划分过程:我们通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边. 给定划分后的N个互不相同的正整数的排列,请问有多 ...

  9. ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联

    ARM Linux 内核 panic 之cache 一致性 ——cci-400 cache一致互联 CCI-400 集合了互联和一致性功能,有 2 个 ACE slave 接口和 3 个 ACE-Li ...

  10. python对文件进行读写操作

    转:http://sucre.iteye.com/blog/704077 ython进行文件读写的函数是open或file file_handler = open(filename,,mode) Ta ...