• 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)

    Immutable Set

    Immutable Map

    Mutable Seq

    如何选择集合类

    各种Immutable Sequence的特性比较

    各种Mutable Sequence的特性比较

    各种Map的特性比较

    各种Set的特性比较

    注原文地址:https://blog.csdn.net/bluishglc/article/details/51085917

  • 相关阅读:
    [转载]游戏外挂原理
    python cookbook
    RF user guide
    测试理论-selenium的工作原理
    测试理论- the conten of test plan
    测试理论--branch testing and boundary testing
    测试理论--向高级出发
    fiddler安装及配置
    python 面试题: 列表表达式
    [redis]如何将redis设置成diango的cache backend
  • 原文地址:https://www.cnblogs.com/duodushuduokanbao/p/10194283.html
Copyright © 2020-2023  润新知