Scala 集合(三)

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)被用来测试值是否存在。

对人工智能感兴趣的同学,可以点击以下链接:

现在人工智能非常火爆,很多朋友都想学,但是一般的教程都是为博硕生准备的,太难看懂了。最近发现了一个非常适合小白入门的教程,不仅通俗易懂而且还很风趣幽默。所以忍不住分享一下给大家。点这里可以跳转到教程。

https://www.cbedai.net/u014646662

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值