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) //只有一行的话,用() } }
scala集合函数式编程使用示例
最新推荐文章于 2024-07-31 16:00:00 发布