集合
- Seq是一个有先后次序的值的序列,比如数组或列表.IndexedSeq允许通过整形的下标快速地访问任意元素
- Set是一组没有先后次序的值
- Map是一组(键值)对偶
可变和不可变集合
- 不可变集合从不改变,可以安全地共享其引用(可用于多线程)
- Scala优先采用不可变集合
序列
列表
- 列表要么是Nil(空列表),要么是一个head元素加上一个tail,而tail又是一个列表
例如: List(4,2) digits.head的值是4,digits.tail是List(2) - ::操作符从给定的头和尾创建一个新的列表(右结合)
9 :: List(4,2) 就是 List(9,4,2) 也可以写作 9::4::2::Nil
可变列表
- LinkedList和DoubleLinkedList
Set集合
- 集合中的元素不能重复,不保留元素的插入顺序
- 链式哈希集可以记住元素被插入的顺序
用于添加或去除元素的操作符
- 1.向后(:+) 或向前(+:)追加到序列当中
- 2.添加(+)元素到无先后次序的集合中
- 3.用-移除元素
- 4.用++和–来批量添加和移除元素
- 5.对于列表,优先使用::和:::
- 6.改值操作有+=,++=,-=和–=
- 7.对于集合,尽量用++,&和–
- 8.尽量不用++:,+=:和++=:
拉链操作
- zip如果一个集合比另一个短,则结果中的对偶数量和较短的那个集合的元素数量相同
- zipAll可以指定较短集合列表的缺省值
- zipWithIndex方法返回对偶的列表,其中每个对偶中的第二部分是每个元素的下标
与java集合的互操作
线程安全的集合
- SynchronizedBuffer
- SynchronizedMap
- SynchronizedPriorityQueue
- SynchronizedQueue
- SynchronizedSet
- SynchronizedStack
并行集合
- par方法返回的并行集合的类型为扩展自ParSeq,ParSet和ParMap特质的类型,所有这些特质都是ParIterable的子类型