Scala函数式程序设计原理 week6 collections
来源:互联网 发布:策划相关书籍知乎 编辑:程序博客网 时间:2024/06/07 06:20
集合特质
Seq是一个有先后次序的值的序列,比如数组或列表。IndexSeq允许我们通过整型的下标快速访问任意元素。
Set是一组没有先后次序的值。在SortedSet中,元素以某种排过序的顺序被访问。
Map是一组(键,值)对偶。SortedMap按照键的排序访问其中的实体。
集合类型定义的增删操作符
Iterable特质的重要方法
可变和不可变集合
Scala同时支持可变和不可变的集合。不可变的集合从不改变,因此你可以安全地共享其引用,甚至在一个多线程的应用程序中也没问题。
Scala优先采用不可变集合
序列
Vector
Vector是ArrayBuffer的不可变版本,一个带下标的序列,支持快速的随机访问。向量以树形结构的形式实现,每个节点可以有不超过32个子结点,对于一个有100万个元素的向量而言,只需4层结点。
Range
Range表示一个整数序列,Range对象并不存储所有值而是只有起始值,结束值和增值。
可以用to
(包含末尾)和until
(不含末尾)和by
(步长)方法构造Range对象。
val r:Range = 1 until 5//1,2,34val s:Range = 1 to 5//1,2,3,4,51 to 10 by 3 //1,4,7,10
Array和String
Array和String支持和Seq相同的操作,可以隐式地转换成序列。(他们不能成为序列的子类,因为他们来组与Java)
val xs:Array[Int] = Array(1,2,3)xs map (x => 2*x)val ys: String = "Hello"ys filter (_.isUpper)
可变列表
可变的LinkedList
和不可变的List
相似,可以通过对elem引用赋值来修改其头部,对next引用赋值来修改其尾部。
for循环表达式
集Set
集是不重复元素的集合。集是无序的。
映射Map
另一个基础集合类型是map.一个类型为Map[Key,Value]
的数据结构。
查询映射
map.getOrElse(key,default_value)
更新映射
在可变映射中,可以更新映射的值,或者添加一个新的映射关系
scores(“Bob”) = 10
迭代映射
for ((k,v) <- 映射) 处理k和v
默认值
至今为止,映射是偏函数,一个并非对所有输入值都有定义的函数。withDefaultValue
操作可以将一个映射转换成完全函数。
val cap1 = capitalOfCounry withDefaultValue "<unknown>"cap1("abc")//"unkonwn"
- Scala函数式程序设计原理 week6 collections
- Scala函数式程序设计原理 week5 List
- Scala函数式程序设计原理 week1 Getting Started + Functions & Evaluation
- Scala函数式程序设计原理 week2 Higher Order Functions
- Scala函数式程序设计原理 week3 Data and Abstraction
- Scala函数式程序设计原理 week4 Types and Pattern Matching
- Scala函数式编程原理
- C++ 程序设计 Week6 多态和虚函数
- Scala函数式程序设计 week2 Lazy Evaluation
- Scala函数式程序设计 week4 Timely Effects
- Scala函数式编程原理 第三课
- Scala函数式程序设计 week1 For Expressions and Monads
- Scala函数式程序设计 week3 Functions and State
- C程序设计进阶week6(指针3)
- week6
- Scala Collections 注意事项
- collections in scala
- scala程序设计
- 转自知乎
- 使用STS 构建 Spring Boot 项目
- 利用函数调运,实现数的交换(排大小)
- 监听器 ServletContextListener使用详解
- Shell 教程
- Scala函数式程序设计原理 week6 collections
- 5节点Hadoop分布式集群搭建经验分享
- PHPstudy的apache80端口被占用解决方法
- 1.开班信息
- KabyLake也就是第七代酷睿处理器安装win7 HD620驱动
- oracle创建数据库表空间—新手可以看看,大佬勿喷
- Python 安装第三方库
- libiconv库安装与静态链接库编译说明
- 排列问题java实现