gpt4 book ai didi

arrays - scala 中数组和列表的区别

转载 作者:行者123 更新时间:2023-12-03 04:29:38 24 4
gpt4 key购买 nike

在什么情况下我应该使用Array(Buffer)和List(Buffer)。我知道的唯一一个区别是数组是不变的而列表是协变的。但是性能和其他一些特性又如何呢?

最佳答案

不可变结构

Scala List 是一种不可变的递归数据结构,它是 Scala 中的基本结构,您应该(可能)更多地使用它而不是 Array (它实际上是可变 - Array不可变模拟IndexedSeq)。

如果您有 Java 背景,那么明显的相似之处是何时使用 LinkedList 而不是 ArrayList。前者通常用于仅遍历的列表(并且其大小预先未知),而后者应用于具有已知大小(或最大大小)或具有已知大小(或最大大小)的列表快速随机访问很重要。

可变结构

ListBuffer 提供了到 List 的恒定时间转换,如果以后需要进行此类转换,这就是使用 ListBuffer 的唯一原因。

scala Array 应该通过 Java 数组在 JVM 上实现,因此 Array[Int] 的性能可能更高(作为 int [])而不是 List[Int] (它将对其内容进行装箱,除非您使用的是具有新 @specialized 的最新版本的 Scala功能)。

但是,我认为 Scala 中数组的使用应该保持在最低限度,因为感觉你真的需要知道幕后发生了什么来决定你的数组是否真的将由所需的原始类型支持,或者可以装箱为包装类型。

关于arrays - scala 中数组和列表的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2712877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com