Scala 集合选择
Scala程序设计 第2版 - 原版.pdf 下载:https://download.csdn.net/download/u014646662/10805074
除了决定使用可变集合还是不可变集合,并行集合或非并行集合,在给定的场景下,你还需要决定究竟应该选择什么集合类型?
当可能同时有可变和不可变两种选择时,我将使用immutable.List(mutable.LinkedList)来表示不可变(可变)的选项。
你需要有序、可遍历的序列吗? 那就考虑immutable.List(mutable.LinkedList)、immutable.Vector 或mutable.ArrayBuffer。
List 提供了O(1) 的前插和取头节点复杂度,但追加和读取内部其他元素的复杂度为O(n)。由于Vector 是可持久的数据结构(如前面所讨论的一样),它的所有操作都是O(1) 复杂度。
如果你需要随机访问,ArrayBuffer 是更好的选择。追加、更新和随机访问所需要的均摊时间复杂度均为O(1),但前插和删除复杂度为O(n)。
所以,当你需要一个序列时,如果你多半与头部元素打交道,主要使用List;如果你需要访问一般元素,则使用Vector。Vector 是一个强大、通用的,具有优异全能表现的集合。不过,在有些情况下,ArrayBuffer 能提供更低的常数时间,从而降低开销,提高性能。
其他的通用场景中,我们需要基于键的、O(1) 复杂度的元素存取,也就是数值根据键被存储在immutable.Map(mutable.Map)中。同样,immutable.Set(mutable.Set)被用来测试值是否存在。
对人工智能感兴趣的同学,可以点击以下链接:
现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。