scala中List、Array、ListBuffer、ArrayList、Set
一、List
List列表:不可变。LIst支持在头部快速添加和移除条目,但是不提供快速按下标访问的功能,这个功能需要线性遍历列。
List列表跟数组非常像,两者都是同构的,同一个列表的所有元素必须是相同类型。
但是有2个重要区别:
- List是不可变的,元素不能通过赋值改变。
- 列表的结构是递归的(即链表,linkedList),而数组是平等的。
toList、toArray相互转换:
scala> Array(1,2,3).toList
res14: List[Int] = List(1, 2, 3)
scala> List(1,2,3).toArray
res15: Array[Int] = Array(1, 2, 3)
二、Array
Array数组:可变。提供下标高效访问(获取或更新)指定位置的元素值。
三、LIstBuffer
列表缓冲LIstBuffer:可变。ListBuffer,提供了常量时间的往后追加和往前追加的操作,最后调用toList获取List。
四、ArrayBuffer
数组缓冲ArrayBuffer:可变。
所有的Array操作在ArrayBuffer都可用。不过由于实现的包装,会稍慢一些。
新的添加和移除操作平均而言是常量时间,不过偶尔会需要线性的时间,这是因为其实现需要不时地分配新的数组来保存缓存的内容。
五、Set
集Set,提供了可变和不可变。每个元素对象最多出现一次。