Scala有一个非常通用,丰富,强大,可组合的集合库;集合是高阶的(high level)并暴露了一大套操作方法。
Scala的所有的集合类都可以在包 scala.collection 包中找到,其中集合类都是高级抽象类或特性
Iterable[T] 是所有可遍历的集合,它提供了迭代的方法(foreach)。Seq[T] 是有序集合,Set[T]是数学上的集合(无序且不重复),Map[T]是关联数组,也是无序的。
Scala 集合类系统地区分了可变的和不可变的集合。
可变集合可以在适当的地方被更新或扩展,意味着你可以修改、添加、移除一个集合的元素。
而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这 些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。
可变的集合类位于 scala.collection.mutable 包中,而不可变的集合位于 scala.collection.immutable 。
scala.collection 包中的集合,既可以是可变的,也可以是不可变的
官方文档
http://www.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
其它用到时候再看
集合常用高阶函数
閱讀更多 分享電腦學習 的文章