数组 – 数组和列表在scala中的区别

在什么情况下,我应该使用Array(Buffer)和List(Buffer)。只有一个区别,我知道是数组是非变量和列表是协变的。但是性能和其他一些特性呢?
不变结构

Scala列表是一个不可变的递归数据结构,它是Scala中的一个基本结构,你应该(可能)使用它远远超过一个Array(实际上是可变的 – Array的不可变模拟是IndexedSeq)。

如果你是从Java的背景,那么显而易见的并行是什么时候使用LinkedList通过ArrayList。前者通常用于仅被遍历的列表(并且其大小不是预先知道的),而后者应该用于具有已知大小(或最大大小)或快速随机访问是重要的列表。

可变结构

ListBuffer提供了一个常量时间转换到一个列表,这是单独的理由使用ListBuffer,如果这样后来的转换是必需的。

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

但是,我认为在Scala中使用Arrays应该保持最小,因为它感觉像你真的需要知道正在发生什么,以确定你的数组是否真的将支持所需的基本类型,或者被封装为包装类型。

http://stackoverflow.com/questions/2712877/difference-between-array-and-list-in-scala

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:数组 – 数组和列表在scala中的区别