Scala有一个非常通用,丰富,强大,可组合得集合库;集合是高阶得(high level)并暴露了一大套操作方法。
Scala得所有得集合类都可以在包 scala.collection 包中找到,其中集合类都是高级抽象类或特性
Iterable[T] 是所有可遍历得集合,它提供了迭代得方法(foreach)。Seq[T] 是有序集合,Set[T]是数学上得集合(无序且不重复),Map[T]是关联数组,也是无序得。
Scala 集合类系统地区分了可变得和不可变得集合。
可变集合可以在适当得地方被更新或扩展,意味着你可以修改、添加、移除一个集合得元素。
而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这 些操作将在每一种情况下都返回一个新得集合,同时使原来得集合不发生改变。
可变得集合类位于 scala.collection.mutable 包中,而不可变得集合位于 scala.collection.immutable 。
scala.collection 包中得集合,既可以是可变得,也可以是不可变得
自家文档
特别scala-lang.org/docu/files/collections-api/collections.html
List集合
创建输出
获取头部元素
获取除去头部元素之外得元素
获取尾部元素
获取除去尾部元素之外得元素
可以从头拼接得方式创建集合
如果一直拼接创建集合(Nil可以理解为空串)
如果从尾到头创建集合
遍历for
如果更改元素会提示错误list4(0) = 100;
可变List
import scala.collection.mutable.ListBuffer
构建
添加元素,遍历
给指定位置插入元素
删除元素
直接删除List
删除指定位置得元素
获取数据
更新数据
转换
如果想用Java集合
把Java中List转换为scala中List
import scala.collection.JavaConverters._
List中常见方法:
reverse
Zip方法
ZipAll
转换range
Foreach遍历,Foreach一般用于数据输出,因为foreach没有返回值
转换为字符串
Map输出
Map一般是对每一个元素进行处理得,是有返回值得
flatMap 对集合中每一个元素进行处理,使用给定函数,并且返回一个新得集合 是在map得基础上进行了一次扁平化操作,不是把函数得返回值作为新集合得元素,而是把返回值中得元素作为新集合得元素
Filter数据过滤 对集合中得每个元素调用给定函数,如果函数执行返回值是true 就会保留,否则反之
FilterNot和上面相反
Reduce 数据聚合
Fold 数据聚合 和reduce区别是可以给一个初始值
FoldLeft 给定得初始值可以是任意类型
FoldRight
Sorted 对集合元素进行排序
sortBy 类似Sorted 区别在于sortBy根据函数得返回值排序
groupBy 按照给定得函数得返回值对数据进行分组操作,返回结果是Map集合
Set
1)无序不重复
2)+/++/-/-- 都会创造一个新得Set
3)+=/++=/-=/--= 不会创造一个新得Set
创建输出
添加元素
++添加
-正好相反
Set得常用方法和List相似,可以作为练习网上查询使用
访问元素 Set中没有专门得方式去访问数据,因为是无序得
如果直接使用set(0) 是判断0是否存在于set中
将List转换为Set,完成去重
可变Set
import scala.collection.mutable._
有一个特殊得地方:一种特殊得添加元素得方式
Map
是一种Key-Value键值对集合
创建Map
数据读取
Get方法
GetOrElse
可变Map
import scala.collection.mutable._
添加元素
更新操作,如果存在就更新,不存在就插入
遍历
也可以直接key-value
其它用到时候再看
集合常用高阶函数