什么情况下我应该使用Array(Buffer)和List(Buffer)。我知道的唯一区别是数组是不变的,列表是协变的。但是性能和其他一些特征呢? 问题来源于stack overflow
不变结构 斯卡拉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,因为感觉就像您真的需要了解幕后发生的事情一样,才能确定数组是否真正由所需的原始类型支持,或者被包装为包装类型。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。