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. shared_ptr 的使用及注意事项

    1. 声明#include <boost/shared_ptr.hpp> class UsersBitmap { ... } typedef boost::shared_ptr<Us ...

  2. ranger文件管理器

    我是一个 CLI 控,但一直苦于没有一个好用的文件管理器.虽然 vifm 的 vim 键绑定很合我的胃口,但它实在不好用.所以我一直没有停止过寻找类似软件的念头.直到尝试了 Ranger, 觉得很不错 ...

  3. AngularJs学习笔记--Understanding the Controller Component

    原版地址:http://docs.angularjs.org/guide/dev_guide.mvc.understanding_model 在angular中,controller是一个javasc ...

  4. Git bash 终止git log 命令

    Git bash中 可以通过键入: q ,结束该命令.

  5. 浅谈对MJRefresh(上)下拉刷新控件的理解

    MJRefresh GitHub地址:https://github.com/CoderMJLee/MJRefresh 利用业余时间研究了一下iOS的开发,发现OC特定的语法方式吸引了我,而且iOS开发 ...

  6. 【转】java.lang.ClassNotFoundException: org.springframework.context.event.GenericApplicationListener

    http://www.cnblogs.com/softidea/p/6064091.html Caused by: java.lang.NoClassDefFoundError: org/spring ...

  7. heatmap for arcgisjsapi

    在arcgis for js api 环境下使用heatmap插件. 由于最新的heatmap没有提供 for arcgisjsapi  插件,懒得研究新版本代码,所以这里用的还是老版本的heatma ...

  8. peripheralStateNotificationCB

    /********************************************************************* * @fn peripheralStateNotifica ...

  9. STM32之FSMC

    FSMC全称“静态存储器控制器”. 使用FSMC控制器后,可以把FSMC提供的FSMC_A[25:0]作为地址线,而把FSMC提供的FSMC_D[15:0]作为数据总线. (1)当存储数据设为8位时, ...

  10. Oracle 左连接(+)加号用法及常用语法之间的关系

    本文目的: 通过分析左连接(+)加号的写法和一些常用语法之间的联系,了解到Oracle 加号(+)的用法 分析步骤: 1.首先创建测试表的结构: create table test_left_a (a ...