Scala中Array和List的区别
2015-12-09 14:03
423 查看
Difference between Array and List in scala
Q:什么时候用Array(Buffer)和List(Buffer)?
A: Scala中的List是不可变的递归数据(immutable recursive data),是Scala中的一种基础结构,你应该多用List而不是Array(Array实际上是mutable,不可变(immutable)的Array是IndexedSeq)
Mutable Structures
ListBuffer提供一个常数时间的转换到List。
一个Scala的Array应该是由Java array生成的,因此一个Array[Int]也许比List[Int]更有效率。
但是,我认为Scala中数组尽量少用,因为它感觉是你真的需要知道底层发生了什么,来决定是否Array将所需的基本数据类型进行备份,或者可能boxed as a wrapper type.
所以,除非你需要快速随机访问或需要count batches of elements,否则,列表比数组更好。
Q:什么时候用Array(Buffer)和List(Buffer)?
A: Scala中的List是不可变的递归数据(immutable recursive data),是Scala中的一种基础结构,你应该多用List而不是Array(Array实际上是mutable,不可变(immutable)的Array是IndexedSeq)
Mutable Structures
ListBuffer提供一个常数时间的转换到List。
一个Scala的Array应该是由Java array生成的,因此一个Array[Int]也许比List[Int]更有效率。
但是,我认为Scala中数组尽量少用,因为它感觉是你真的需要知道底层发生了什么,来决定是否Array将所需的基本数据类型进行备份,或者可能boxed as a wrapper type.
Performance differences | Array | List |
---|---|---|
Access the ith element | O(1) | O(i) |
Discard the ith element | O(n) | O(i) |
Insert an element at i | O(n) | O(i) |
Reverse | O(n) | O(n) |
Concatenate (length m,n) | O(n+m) | O(n) |
Calculate the length | O(1) | O(n) |
memory differences | Array | List |
---|---|---|
Get the first i elements | O(i) | O(i) |
Drop the first i elements | O(n-i) | O(1) |
Insert an element at i | O(n) | O(i) |
Reverse | O(n) | O(n) |
Concatenate (length m,n) | O(n+m) | O(n) |
相关文章推荐
- 冒泡选择插入三种排序
- 常用的Javascript设计模式小结
- VS2013定义了重复的 system.web.extensions/scripting/scriptResourceHandler
- kibana fatal error
- 常用vi编辑器命令行
- Android 学习资源收集
- 多线程编程之Windows环境下创建新线程
- linux命令: tree的c实现
- 夺命雷公狗---memcache NO:07 memcache 的其他问题
- GTK+重拾--04 菜单栏使用
- 【Qt中的定时器】
- Swift method的internalname和externalname
- 时间都去哪儿了—兄弟连IT教育
- 10015---Nginx 常用命令
- JVM最多能创建多少个线程: unable to create new native thread
- modelsim仿真include文件
- 夺命雷公狗---memcache NO:06 session文件存储 到memcache里面
- java多线程之生产者消费者经典问题 - 很不错的范例
- LeetCode(224) Basic Calculator
- Android多点触摸交互处理-图片缩放