scala集合函數語言程式設計使用示例
阿新 • • 發佈:2018-12-25
package com.sparktest
/**
* 1.在Scala的集合體系中Iterable是共同的Trait,Iterable要求繼承者實現一些共同的方法,例如對元素的遍歷等
* 2.Array是一個非常基礎的資料結構,不從屬於scala的集合體系
* 3.在scala的集合體系中,集合分為可變集合和不可變集合:
* 不可變集合在scala.collection.immutable包中
* 可變集合在scala.collection.mutable包中
* 4.List是元素的列表集合,是不可變的
* 第一:List中head是指第一個元素,tail是指剩下的元素構造的List 集合
* 第二:使用兩個::這個操作符來把List和其他的元素進行組拼來構造新的List
* 第三:如果集合中沒有元素的話,此時為Nil,例如List中只有一個元素,那麼head就是這個元素本身,tail操作就會返回Nil
* 5.LinkedList是元素可變的列表
* 6.Set是元素不可重複的集合,並且元素是無序的,HashSet中的元素可變、無序的、不可重複
* 7.LinkedHashSet會保證插入的順序
* 8.SortedSet會自動地把插入的元素進行排序
*/
object Functional_Iterable {
def main(args: Array[String ]): Unit = {
val range = 1 to 10
val list = List(1, 2, 3, 4, 5)
println(list.head)
println(list.tail)
println(0 :: list)
var linkedList = scala.collection.mutable.LinkedList(1, 2, 3, 4, 5)
println(linkedList.head)
println(linkedList.elem) //也是第一個元素
println(linkedList.tail)
while (linkedList != Nil) {
println(linkedList.elem)
linkedList = linkedList.tail
}
val copied = linkedList.+:(9)
println(copied)
val set = Set(1, 2, 3, 4, 5) //
println(set)
val setMore = set + 1 //集合中新增元素
println(setMore) //Set(1,2,3,4,5),元素不可重複
val hashSet = scala.collection.mutable.HashSet(1, 2, 3)
hashSet += 5
hashSet += 50
println(hashSet)
val linkedHashSet = scala.collection.mutable.LinkedHashSet(1, 2, 3)
linkedHashSet += 5
linkedHashSet += 50
println(linkedHashSet)
val sortedSet = scala.collection.mutable.SortedSet(1, 2, 3, 5, 50, 4)
println(sortedSet)
List("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map { x => (x, 1) }
.map { x => x._2}.reduce(_+_)
// 等價於
// 集合中,如果操作的只有一個輸入元素,而且右側只對這個輸入元素只用一次的話,那麼這個元素可以用_代替
List("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map {(_, 1) }
.map { _._2}.reduce(_+_)//reduce((x,y) => x + y)
List(0,1,2,3,4,5).foreach { x => println(x)}
// 等價於
List(0,1,2,3,4,5).foreach {println(_)}
// 等價於
List(0,1,2,3,4,5).foreach {println _ }
// 等價於
List(0,1,2,3,4,5).foreach {println}
// 等價於
List(0,1,2,3,4,5).foreach (println) //只有一行的話,用()
}
}