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. Memory Leak Detection in C++

    原文链接:http://www.linuxjournal.com/article/6556?page=0,0 An earlier article [“Memory Leak Detection in ...

  2. June 20th 2017 Week 25th Tuesday

    Care and diligence bring luck. 谨慎和勤奋,带来好运气. In my opinion, care and diligence may just gurantee us a ...

  3. 一个理解PHP面向对象编程(OOP)的实例

    <?php //定义一个“人”类作为父类 class Person{ //声明一个新变量公共变量$name,可被任何包中的类访问 public $name;//人的名字 public $sex; ...

  4. Python深入学习之《Fluent Python》 Part 1

    Python深入学习之<Fluent Python> Part 1 从上个周末开始看这本<流畅的蟒蛇>,技术是慢慢积累的,Python也是慢慢才能写得优雅(pythonic)的 ...

  5. T-sql中的三种分页查询

    USE [APS_Future_FT] GO /****** Object: StoredProcedure [dbo].[A_PagingAndSorting] Script Date: 2013/ ...

  6. BZOJ4419:[SHOI2013]发微博(乱搞)

    Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x   表示用户x发了一条微博: + x y 表示用户x和用 ...

  7. windows8安装msi软件提示2503错误的解决办法

    windows8以后的版本安装msi软件(比如nodejs.msi.Git.msi.python.msi.T ortoiseSVN.msi)的时候老师出现2503.2502的错误,究其原因还是系统权限 ...

  8. 20145238-荆玉茗《网络对抗技术》MSF基础应用

    20145238荆玉茗-<网络攻防>-MSF基础应用 实践过程 MS08_067漏洞渗透攻击实践(主动攻击) 实验工具: kali&windows xp 将xp的网络设为NAT模式 ...

  9. Comparable 接口的使用

    //学生类 package test; public class Student implements Comparable<Student>{ private int age; priv ...

  10. Web Pages

    什么是Web Pages 1.WebPages是三种创建ASP.NET网站或Web应用程序模式中的一种 2.而其两种编程模式是MVC(Model-View-Controller,模型-视图-控制器)和 ...