Scala之集合Collection
2024-08-25 05:03:48
概述
Scala的集合类能够从三个维度进行切分:
- 可变与不可变集合(Immutable and mutable collections)
- 静态与延迟载入集合 (Eager and delayed evaluation )
- 串行与并行计算集合(Sequential and parallel evaluation )
关于第一个维度我想我们不须要再介绍了。
关于第二维度。是这样解释的, 首先我们来解释一个概念:transformation,集合中有大量的操作都是把一个集合“转换”成还有一个集合,比方map,filter等等。而Eager和Delayed集合的差别在于:Eager集合总是马上为元素分配内存,当遇到一个transform动作时,Eager的集合会直接计算并返回结果。而Delayed集合则会尽可能晚的推迟运行。直到必须返回结果时才去运行。
这一点和Spark RDD操作中的transformation和action非常相似。
在现有的集合里,仅仅有Stream是Lasy的。全部其它的集合都是静态(Eager)载入的。
可是你能够非常easy地把一个静态集合转换成lazy的。那就是创建一个view。
集合类型总览
Immutable Collection
Immutable Seq
Seq主要分两大类:indexed sequences和linear sequences,indexed sequences暗示本类集合在随机读取方面有较高的性能(相似数据结构中的数组)。linear sequences暗示本类集合在head和tail操作和顺序遍历上更有优势(相似于数据结构中的双向列表)
在使用Seq时,默认使用的详细类是List, 使用IndexedSeq时默认使用的详细类是Vector.
scala> val seq = Seq(1,2,3)
seq: Seq[Int] = List(1, 2, 3)
scala> val indexedSeq = IndexedSeq(1,2,3)
indexedSeq: IndexedSeq[Int] = Vector(1, 2, 3)
Immutable Set
Immutable Map
Mutable Seq
怎样选择集合类
各种Immutable Sequence的特性比較
各种Mutable Sequence的特性比較
各种Map的特性比較
各种Set的特性比較
注: 本文类图參考自《Beginning Scala》, 表格參考自《Scala Cookbook》
相关阅读
Scala之模式匹配(Patterns Matching)
Scala之Partially Applied Function和Currying
Scala之偏函数Partial Function
Scala之Case Class
Scala之主构造函数
Scala之隐式转换
最新文章
- .Net组件程序设计之线程、并发管理(一)
- Android点击空白处,隐藏软键盘
- sql 2012 提示列名无效 但可以执行问题
- SHARE NOTHING SHARE EVERYTHING
- Burning Bridges-ZOJ1588(割边求解)
- C#中using关键字的作用及用法
- 常用的sql脚本 游标遍历操作
- [v]Debian类系统的有效国内源
- centos 编译swoole
- DBHelper 数据库帮助类
- Python NTLK资料
- HashMap的工作原理(转)
- 5月,专用程序猿的经典大作——APUE
- MinGW GCC 7.1.0 2017年6月份出炉啦
- SHELL打印两个日期之间的日期
- 【小工具】根据定义的白名单字段进行Bean的拷贝
- shell(1)
- PM2 指令简介
- 浅析Redis 和MongoDB
- JS本地存储信息的实现方式(localStorage 与 userData)