- 2
- 0
- 约6.6千字
- 约 12页
- 2021-08-18 发布于北京
- 举报
PAGE4 / NUMPAGES4
Scala集合
一、集合简介
Scala 中拥有多种集合类型,主要分为可变的和不可变的集合两大类:
可变集合: 可以被修改。即可以更改,添加,删除集合中的元素;
不可变集合类:不能被修改。对集合执行更改,添加或删除操作都会返回一个新的集合,而不是修改原来的集合。
二、集合结构
Scala 中的大部分集合类都存在三类变体,分别位于?scala.collection,?scala.collection.immutable,?scala.collection.mutable?包中。还有部分集合类位于?scala.collection.generic?包下。
scala.collection.immutable?:包是中的集合是不可变的;
scala.collection.mutable?:包中的集合是可变的;
scala.collection?:包中的集合,既可以是可变的,也可以是不可变的。
val sortSet = scala.collection.SortedSet(1, 2, 3, 4, 5)
val mutableSet = collection.mutable.SortedSet(1, 2, 3, 4, 5)
val immutableSet = collection.immutable.SortedSet(1, 2, 3, 4, 5)
如果仅写了?Set?而没有加任何前缀也没有进行任何?import,则 Scala 默认采用不可变集合类。
scala Set(1,2,3,4,5)
res0: scala.collection.immutable.Set[Int] = Set(5, 1, 2, 3, 4)
2.1 scala.collection
scala.collection 包中所有集合如图1所示:
图1 Collection集合
2.2 scala.collection.mutable
scala.collection.mutable 包中所有集合如图2:
图2 scala.collection.mutable
2.3 scala.collection.immutable
scala.collection.immutable 包中所有集合如图3所示:
图3 scala.collection.immutable
三、Trait Traversable
Scala 中所有集合的顶层实现是?Traversable?。它唯一的抽象方法是?foreach:
def foreach[U](f: Elem = U)
实现?Traversable?的集合类只需要实现这个抽象方法,其他方法可以从?Traversable?继承。Traversable?中的所有可用方法如表1:
方法
作用
Abstract Method:
xs foreach f
为 xs 的每个元素执行函数 f
Addition:
xs ++ ys
一个包含 xs 和 ys 中所有元素的新的集合。 ys 是一个 Traversable 或 Iterator。
Maps:
xs map f
对 xs 中每一个元素应用函数 f,并返回一个新的集合
xs flatMap f
对 xs 中每一个元素应用函数 f,最后将结果合并成一个新的集合
xs collect f
对 xs 中每一个元素调用偏函数 f,并返回一个新的集合
Conversions:
xs.toArray
将集合转化为一个 Array
xs.toList
将集合转化为一个 List
xs.toIterable
将集合转化为一个 Iterable
xs.toSeq
将集合转化为一个 Seq
xs.toIndexedSeq
将集合转化为一个 IndexedSeq
xs.toStream
将集合转化为一个延迟计算的流
xs.toSet
将集合转化为一个 Set
xs.toMap
将一个(key, value)对的集合转化为一个 Map。 如果当前集合的元素类型不是(key, value)对形式, 则报静态类型错误。
Copying:
xs copyToBuffer buf
拷贝集合中所有元素到缓存 buf
xs copyToArray(arr,s,n)
从索引 s 开始,将集合中最多 n 个元素复制到数组 arr。 最后两个参数是可选的。
Size info:
xs.isEmpty
判断集合是否为空
xs.nonEmpty
判断集合是否包含元素
xs.size
返回集合中元素的个数
xs.hasDefiniteSize
如果 xs 具有有限大小,则为真。
Element Retrieval:
xs.head
返回集合中的第一个元素(如果无序,则随机返回)
xs.headO
您可能关注的文档
- 应急救援干粉灭火器拓展阅读:干粉灭火器电子教材.doc
- 应急救援二氧化碳灭火器拓展阅读:二氧化碳灭火器电子教材.doc
- 云平台建设与运维类企业案例计算管理医疗云-测试云主机.docx
- 云平台建设与运维类企业案例设备及软件情况港口私有云-服务器配置.docx
- 云平台建设与运维类企业案例设备及软件情况港口私有云-整体架构.docx
- 云平台建设与运维类企业案例设备及软件情况互联网营销云网络规划.docx
- 云平台建设与运维类企业案例系统管理互联网营销云-测试API开放程度.docx
- 云平台建设与运维类企业案例用户安全Animbus平台的角色管理.docx
- 云平台建设与运维类企业案例用户安全Animbus平台的用户管理.docx
- 云平台建设与运维类企业案例用户安全身份认证介绍.docx
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)