** A base trait for iterable collections.
* $iterableInfo
*/
trait Iterable[+A] extends Traversable[A]
with GenIterable[A]
with GenericTraversableTemplate[A, Iterable]
with IterableLike[A, Iterable[A]] {
package com.dt.spark.scala.basics
/**
* 1.在Scala的集合体系中Iterable是共同的接口,Iterable要求继承者实现一些共同的方法
* 例如对元素的遍历等
* 2.Array是非常基础的数据结构,不从属于Scala集合的体系
* final class Array[T](_length: Int) extends java.io.Serializable with java.lang.Cloneable {
*/
object FunctionalIterator {
def main(args:Array[String]){
/**
* 3.Scala的集合体系中分为可变集合和不可变集合之分
* 不可变集合位于scala.collection.immutable中
* 可变集合位于scala.collection.mutable中
* 可以看到Range这个集合实现了Iterable接口
*/
val range=1 to 10
/**
* 4.List的元素的列表集合是不可变的
* 1.List中head是指第一个元素,tail是指剩下的元素的集合
* 2.使用 :: 这个操作符来把List和其他的元素进行组拼来构建新的List
* 3.如果集合中没有元素,此时为Nil,例如说List中只有一个元素的话,
* head就是这个元素本身,而tail返回的是就是Nil
* 4.List是不可变的
*/
val list=List(1,2,3,4)
println(list.head)
println(list.tail)
println(0 :: list)
println(List(1).tail)
/**
* 5.LinkedList是元素可变的列表
*/
import scala.collection.mutable.LinkedList
var linkedList=LinkedList(1,2,3,4,5)
println(linkedList.head)
println(linkedList.elem) //第一个元素
println(linkedList.tail)
while(linkedList != Nil){
println(linkedList.elem)
linkedList = linkedList.tail
}
println(linkedList)
val copy=linkedList.+:(8)
println(copy)
/**
* 6.Set是不可重复的且元素是无序的
*/
val set=Set(1,2,3,4,5)
println(set)
val moreSet=set + 1
println(moreSet)
val hashSet=scala.collection.mutable.HashSet(1,2,3,4,5)
println(hashSet)
hashSet += 6
println(hashSet)
/**
* 7.LinkedHashSet会维护元素的插入顺序
*/
val linkedHashSet =scala.collection.mutable.LinkedHashSet(1,2,3,4,5)
linkedHashSet+=6
println(linkedHashSet)
/**
* 8.SortedSet会自动地把插入的元素进行排序
*/
val sortedSet=scala.collection.mutable.SortedSet(2,6,8,4,5)
println(sortedSet)
/**
* 9.集合上的函数式编程
*/
println(List("I am into Spark so much","Scala is powerful")
.flatMap(x => x.split(" "))
.map((_,1))
.map(_._2)
.reduce(_+_))
List(1,2,3,4,5).foreach(println(_))
List(1,2,3,4,5).foreach(println _)
List(1,2,3,4,5).foreach(println)
}
}
归纳总结:1.在Scala的继承体系中,什么是共同的接口?
2.从源码看,Array 属于Scala集合的体系?
3.看List部分的笔记
4.看LinkedList的笔记
5.看Set的笔记
6.看LinkedHashSet的笔记
7.看SortedSet的笔记
8.集合上的函数式编程