一、可变和不可变集合
### --- 集成大纲
~~~ Scala中的可变和不可变集合
~~~ 集合的三大类:Seq、Set、Map
~~~ 集合的常用算子
~~~ Scala与Java之间的集合转换
### --- 可变和不可变集合
~~~ 根据容器中元素的组织方式和操作方式,可以分为有序和无序、可变和不可变等不同的容器类别;不可变集合是指集合内的元素一旦初始化完成就不可再进行更改,任何对集合的改变都将生成一个新的集合;
~~~ 可变集合提供了改变集合内元素的方法;
~~~ # Scala同时支持可变集合和不可变集合,主要下面两个包:
~~~ scala.collection.mutable:定义了可变集合的特质和具体实现类
~~~ scala.collection.immutable:定义了不可变集合的特质和具体实现类
~~~ # 对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本。
~~~ Scala优先采用不可变集合,不可变集合元素不可更改,可以安全的并发访问。
~~~ Scala集合有三大类:Seq(序列)、Set(集)、Map(映射);
~~~ 所有的集合都扩展自Iterable特质。
### --- 可变不可变集合架构
~~~ immutable不可变集合:
~~~ mutable可变集合:
![](https://i-blog.csdnimg.cn/blog_migrate/d23a328172479b5307eed26db1be922b.png)
![](https://i-blog.csdnimg.cn/blog_migrate/c59fc0526e1c0519d18713426215daaa.png)
![](https://i-blog.csdnimg.cn/blog_migrate/2d9d5f8f3d115d2e5cd3ee108e2062af.png)
### --- 小结:
~~~ String属于IndexedSeq
~~~ Queue队列和Stack堆这两个经典的数据结构属于LinearSeq
~~~ Map体系下有一个SortedMap,说明Scala中的Map是可以支持排序的
~~~ mutable可变集合中Seq中的Buffer下有ListBuffer,它相当于可变的List列表;
~~~ List列表属于Seq中的LinearSeq