开发者社区> 问答> 正文

Scala中数组和列表之间的区别

什么情况下我应该使用Array(Buffer)和List(Buffer)。我知道的唯一区别是数组是不变的,列表是协变的。但是性能和其他一些特征呢? 问题来源于stack overflow

展开
收起
保持可爱mmm 2020-02-07 01:16:07 1212 0
1 条回答
写回答
取消 提交回答
  • 不变结构 斯卡拉List是不可变的递归数据结构,它是Scala这样的基本结构,你应该(可能)使用它远远超过一个是Array(这实际上是可变的 -的不可变模拟的Array是IndexedSeq)。

    如果您来自Java背景,那么显而易见的并行是何时使用LinkedListover ArrayList。前者通常用于只遍历过的列表(其大小事先未得知),而后者应用于具有已知大小(或最大大小)或快速随机访问很重要的列表。

    可变结构 ListBuffer提供了对a的恒定时间转换,如果需要稍后进行转换List,则仅使用该理由ListBuffer。

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

    但是,我认为Array应尽量减少在Scala中使用s,因为感觉就像您真的需要了解幕后发生的事情一样,才能确定数组是否真正由所需的原始类型支持,或者被包装为包装类型。

    2020-02-07 01:16:20
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Just Enough Scala for Spark 立即下载
JDK8新特性与生产-for“华东地区scala爱好者聚会” 立即下载
Apache Flink 流式应用中状态的数据结构定义升级 立即下载