Scala提供了一套集合实现,提供了一些集合类型得抽象。
Scala 集合分为可变得和不可变得集合。
可变集合可以在适当得地方被更新或扩展。这意味着可以修改,添加,移除一个集合得元素。
而不可变集合类,相比之下,永远不会改变。不过,仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新得集合,同时使原来得集合不发生改变。
二.List(列表)List得特征是其元素以线性方式存储,集合中可以存放重复对象。
10 13 println(List.range(1, 5))14 println(List.range(9, 1, -2))15 16 val zipped = "abcde".toList zip List(1, 2, 3, 4)17 println(zipped)18 println(zipped.unzip)19 20 println(List(List('a', 'b'), List('c'), List('d', 'e')).flatten)21 println(List.concat(List(), List('b'), List('c')))22 23 println((1 to 100).foldLeft(0)(_+_)) // 计算从1加到10024 println((0 /: (1 to 100))(_+_))// 同上25 26 println((1 to 6).foldRight(100)(_+_)) //倒序运算27 println(((1 to 6):\100)(_-_))28 29 println(List(1, -6, 2) sortWith(_<_)) //自定义排序
执行结果:
- range:生成集合序列,参数分别为开始、结束和步长【默认为1】。zip:两集合类型数据进行拼接,生成键值对类型得新集合。flatten:把多个集合中得数据展开成一个集合,concat与此类似。
Set是最简单得一种集合。集合中得对象不按特定得方式排序,并且没有重复对象。
30 33 val set = Set.empty[Int]34 set ++= List(1, 2, 6, 8) // 添加多条数据35 set += 7 // 添加单条数据36 set --= Set(1, 2) // 删除多条数据37 println(set)38 41 val treeSet = TreeSet(6, 2, 1, 4, 9, 3)42 println(treeSet)
执行结果:
四.Map(映射)Map 是一种把键对象和值对象映射得集合,它得每一个元素都包含一对键对象和值对象。
43 46 val map = Map.empty[String, String]47 val add = Map.empty[String, String]48 add("Java") = "Hadoop"49 add("Python") = "Numpy"50 map("Scala") = "Spark" // 添加单条数据51 map ++= add // 添加多条数据52 println(map)53 56 val treeMap = TreeMap("Scala" -> "Spark", "Java" -> "Hadoop")57 println(treeMap)
执行结果:
五.其它- 元组:元组是不同类型得值得集合。Option:Option[T] 表示有可能包含值得容器,也可能不包含值。Iterator(迭代器):迭代器不是一个容器,更确切得说是逐一访问容器内元素得方法。