Scala之集合Collection

Posted jhcelue

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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)载入的。

可是你能够非常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之隐式转换


以上是关于Scala之集合Collection的主要内容,如果未能解决你的问题,请参考以下文章

scala的多种集合的使用之映射Map的操作方法

金蝶handler中 collection 代码片段理解

scala的多种集合的使用之遍历集合的方法

scala集合-collection

scala集合和Java集合对应转换操作

scala语言---集合