package basics /** * 1.在scala集合体系中Iterable是共同的Trait,Iterable要求继承实现一些共同的方法 ,例如对元素的遍历 * 2.Array是一个非常基础的数据结构,不是从属scala集合的体系 * 3.scala集合的体系分为可变的集合(在scala.collection.mutable中)和不可变的集合(scala.collection.immutable) * 4. List是元素的列表集合,是不可变的 * a:head是list中的第一个元素,tail是剩下的元素构成的List集合 * b:使用::这操作符来把list和其他的元素进行组拼来构建新的list * c:如果集合中没有元素的话,此时Nil,例如List中只有一个元素那么head就是这个元素本身,tail就会返回Nil * 5.LinkedList是可变元素列表 * 6.Set是元素不可重复的集合,且元素是无序的,HashSet是可变的,但是元素是无序的,元素不能重复 * 7.LinkedHashSet会维护元素的插入顺序 * 8.SortedSet会自动把插入的元素进行排序 * * * * */ object Fuctionnal_Iteralbe { 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.elem)//第一元素 println(linkedlist.tail) while (linkedlist!=Nil) { println(linkedlist.elem)//第一元素 linkedlist=linkedlist.tail } println(linkedlist) //表示linkedlist可以修改 linkedlist=linkedlist.+:(12) println(linkedlist) //表示linkedlist可以修改 val set=Set(1,2,3,4,5) println(set) val setmore=set+1 println(setmore) val hashset=scala.collection.mutable.HashSet(1,2,3) hashset+=5 hashset+=9 println(hashset) val linkedhashset=scala.collection.mutable.LinkedHashSet(1,2,3) linkedhashset+=50 linkedhashset+=90 println(linkedhashset) val sortedset=scala.collection.mutable.SortedSet(100,2,3) sortedset+=50 sortedset+=90 println(sortedset) //通过空格拆分,并把每个元素计算位1,然后获取第二个元素,然后统计元素个数 println(List("spark so much","scala is powerful").flatMap{x=>x.split(" ")}.map{x=>(x,1)}.map(x=>x._2).reduce(_+_)) //如果只有一个输入参数并只使用一次时可以用_代替那个参数 println(List("spark so much","scala is powerful").flatMap{x=>x.split(" ")}.map{(_,1)}.map(_._2).reduce(_+_)) println(List("spark so much","scala is powerful").flatMap{x=>x.split(" ")}.map{(_,1)}.map(_._2).reduce((x,y)=>x+y)) List(1,2,3).foreach(x=>println(x)) List(1,2,3).foreach(println(_)) List(1,2,3).foreach(println _) List(1,2,3).foreach(println) } }