1. 程式人生 > >scala集合函數語言程式設計使用示例

scala集合函數語言程式設計使用示例

package com.sparktest

/**
  * 1.Scala的集合體系中Iterable是共同的Trait,Iterable要求繼承者實現一些共同的方法,例如對元素的遍歷等
* 2.Array是一個非常基礎的資料結構,不從屬於scala的集合體系
* 3.scala的集合體系中,集合分為可變集合和不可變集合:
  * 不可變集合在scala.collection.immutable包中
* 可變集合在scala.collection.mutable包中
* 4.List是元素的列表集合,是不可變的
* 第一:Listhead是指第一個元素,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) //只有一行的話,用() } }