Scala学习笔记(五)—— 元组和集合
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") =100scala.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学习笔记(五)—— 元组和集合的更多相关文章
- PYTHON 学习笔记3 元组、集合、字典
前言 在上一节的学习中.学习了基本的流程控制语句,if-elif-else for while 等,本节将拓展上一节学习过的一些List 列表当中操作的一些基本方法,以及元祖.序列等. 列表扩展 我们 ...
- scala 学习笔记(02) 元组Tuple、数组Array、Map、文件读写、网页抓取示例
package yjmyzz import java.io.PrintWriter import java.util.Date import scala.io.Source object ScalaA ...
- scala 学习笔记十 元组
1.元组初始化 2.元组作为函数返回值 3.元组拆包 上面168行 ,单个val后面跟着一个由五个标识符构成的元组,表示对ff返回的元组进行拆包 上面174行,将整个元组捕获到单个val或var中,那 ...
- scala学习笔记:理解并行集合par
scala> (1 to 5).foreach(println(_)) 1 2 3 4 5 scala> (1 to 5).par.foreach(println(_)) 3 1 4 2 ...
- [Scala]Scala学习笔记五 Object
1. 单例对象 Scala没有静态方法或静态字段,可以使用object来达到这个目的,对象定义了某个类的单个实例: object Account{ private var lastNumber = 0 ...
- scala 学习笔记五 foreach, map, reduce
例子 val v = Vector(,,,) ) println(s) //输出:Vector(2, 4, 6, 8) val v2 = Vector(,,,) var v3 = v2.reduce( ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- C#可扩展编程之MEF学习笔记(五):MEF高级进阶
好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...
- Linux学习笔记(五) 账号管理
1.用户与组账号 用户账号:包括实际人员和逻辑性对象(例如应用程序执行特定工作的账号) 每一个用户账号包含一个唯一的用户 ID 和组 ID 标准用户是系统安装过程中自动创建的用户账号,其中除 root ...
- Scala学习笔记及与Java不同之处总结-从Java开发者角度
Scala与Java具有很多相似之处,但又有很多不同.这里主要从一个Java开发者的角度,总结在使用Scala的过程中所面临的一些思维转变. 这里仅仅是总结了部分两种语言在开发过程中的不同,以后会陆续 ...
随机推荐
- Memory Leak Detection in C++
原文链接:http://www.linuxjournal.com/article/6556?page=0,0 An earlier article [“Memory Leak Detection in ...
- June 20th 2017 Week 25th Tuesday
Care and diligence bring luck. 谨慎和勤奋,带来好运气. In my opinion, care and diligence may just gurantee us a ...
- 一个理解PHP面向对象编程(OOP)的实例
<?php //定义一个“人”类作为父类 class Person{ //声明一个新变量公共变量$name,可被任何包中的类访问 public $name;//人的名字 public $sex; ...
- Python深入学习之《Fluent Python》 Part 1
Python深入学习之<Fluent Python> Part 1 从上个周末开始看这本<流畅的蟒蛇>,技术是慢慢积累的,Python也是慢慢才能写得优雅(pythonic)的 ...
- T-sql中的三种分页查询
USE [APS_Future_FT] GO /****** Object: StoredProcedure [dbo].[A_PagingAndSorting] Script Date: 2013/ ...
- BZOJ4419:[SHOI2013]发微博(乱搞)
Description 刚开通的SH微博共有n个用户(1..n标号),在短短一个月的时间内,用户们活动频繁,共有m条按时间顺序的记录: ! x 表示用户x发了一条微博: + x y 表示用户x和用 ...
- windows8安装msi软件提示2503错误的解决办法
windows8以后的版本安装msi软件(比如nodejs.msi.Git.msi.python.msi.T ortoiseSVN.msi)的时候老师出现2503.2502的错误,究其原因还是系统权限 ...
- 20145238-荆玉茗《网络对抗技术》MSF基础应用
20145238荆玉茗-<网络攻防>-MSF基础应用 实践过程 MS08_067漏洞渗透攻击实践(主动攻击) 实验工具: kali&windows xp 将xp的网络设为NAT模式 ...
- Comparable 接口的使用
//学生类 package test; public class Student implements Comparable<Student>{ private int age; priv ...
- Web Pages
什么是Web Pages 1.WebPages是三种创建ASP.NET网站或Web应用程序模式中的一种 2.而其两种编程模式是MVC(Model-View-Controller,模型-视图-控制器)和 ...