概述

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之隐式转换

最新文章

  1. .Net组件程序设计之线程、并发管理(一)
  2. Android点击空白处,隐藏软键盘
  3. sql 2012 提示列名无效 但可以执行问题
  4. SHARE NOTHING SHARE EVERYTHING
  5. Burning Bridges-ZOJ1588(割边求解)
  6. C#中using关键字的作用及用法
  7. 常用的sql脚本 游标遍历操作
  8. [v]Debian类系统的有效国内源
  9. centos 编译swoole
  10. DBHelper 数据库帮助类
  11. Python NTLK资料
  12. HashMap的工作原理(转)
  13. 5月,专用程序猿的经典大作——APUE
  14. MinGW GCC 7.1.0 2017年6月份出炉啦
  15. SHELL打印两个日期之间的日期
  16. 【小工具】根据定义的白名单字段进行Bean的拷贝
  17. shell(1)
  18. PM2 指令简介
  19. 浅析Redis 和MongoDB
  20. JS本地存储信息的实现方式(localStorage 与 userData)

热门文章

  1. spring mvc返回jsonp内容
  2. Java从零开始学二十九(大数操作(BigIntger、BigDecimal)
  3. Docker 安装使用
  4. Android中保存静态秘钥实践(转)
  5. 【转发】JS中如何判断null/ undefined/IsNull
  6. component和bean区别
  7. 3、eclipse 查看原始类出现The jar file rt.jar has no source attachment解决方法
  8. 如何监控tomcat性能
  9. Google 做过的 12 件奇葩事
  10. vim设置配色主题