所有集合都是iterable的,seq是有先后次序的序列(如数组和列表),Set是没有先后次序的序列,map是一种键值对偶。scala优先采用不可变集合,::操作符从给定的头和尾创建一个新的列表。如果要把列表中的某个节点变成列表中的最后一个节点,不能将next引用设为nil,而应该设为LinkedList.empty.
已排序的集使用红黑树实现的,scala2.9没有可变的已排序集,要用到java.util.TreeSet
Scala 关于添加和移除的操作符:
1)向后(:+)或向前(+:)追加元素到序列中
2)添加(+)元素到无先后次序的集合中
3)用-移除元素
4)用++和--批量添加和移除元素
5)对于列表,优先使用::和:::
6)改值操作有+=,++=,-=和--=
对于集合,推荐++,&和--,尽量不用++:,+=:和++=: 操作方式。
初始值和操作符是两个分开定义的柯里化参数,这样scala就能用初始值类型来推断操作符的类型定义。任何while循环都可以用折叠来替代,对于那些完整构造需要很大开销的集合而言,迭代器作用大,而流将缓存访问过的行,允许你重新访问他们。
对于数组,缓存,哈希表,平衡树而言,基于par方法的并行实现很高效。
时间: 2024-10-12 17:25:12