Scala之集合Collection

                       

概述

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)加载的。但是你可以很容易地把一个静态集合转换成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)
  
  
  • 1
  • 2
  • 3
  • 4
  • 5

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

           
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值