第十四课:Scala集合上的函数式编程实战

** 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.集合上的函数式编程

 

转载于:https://my.oschina.net/u/1449867/blog/727575

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值