Scala入门之集合

蘑菇云课堂代码

package com.dt.scala.moguyun

/**
  * 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 = {
    println("============list============")
    /*
    List,Tuple长度固定,元素不可变
     */
    val range = 1 to 10
    val list = List(1, 2, 3, 4, 5)
    println(list.head)
    println(list.tail)
    println(0 :: list) //元素与集合相连是用::,而集合与集合相与是用:::
    println(list(2))
    //list(1) = 10 //报错:List是不可变的,里面元素不可修改
    println("============ListBuffer============")
    /*
    ListBuffer长度可变,元素可变
     */
    val listBuffer = scala.collection.mutable.ListBuffer(1,2,3)
    listBuffer.append(5)//添加一个元素
    listBuffer += 8//添加一个元素
    listBuffer -= 2//移除第二个元素
    println("listBuffer: " + listBuffer)

    println("============LinkedList============")
    var linkedList = scala.collection.mutable.LinkedList(1, 2, 3, 4, 5)
    println(linkedList.elem) //这是取出第一个元素,会改变集合内容
    println(linkedList.head) //第一个元素
    println(linkedList.tail)

    while (linkedList != Nil) {
      println(linkedList.elem)
      linkedList = linkedList.tail //重新赋值了
    }
    println("linkedList: " + linkedList)

    //+:  在列表的头部添加一个元素
    //:+  在列表的尾部添加一个元素
    //::  在列表的头部添加一个元素
    val copied = linkedList.+:(9)//.+:等价于+:
    println(copied)

    println("============Set============")
    val set = Set(1, 2, 3, 4, 5)
    println(set)

    val setMore = set + 10
    println("Set: " + setMore)

    println("============HashSet============")
    val hashSet = scala.collection.mutable.HashSet(1, 2, 3)
    hashSet += 5
    hashSet += 50
    println("hashSet: " + hashSet)
    println("============LinkedHashSet============")
    val linkedHashSet = scala.collection.mutable.LinkedHashSet(1, 2, 3)
    linkedHashSet += 5
    linkedHashSet += 50
    linkedHashSet += 4
    println("linkedHashSet: " + linkedHashSet)
    println("============SortedSet============")
    val sortedSet = scala.collection.mutable.SortedSet(1, 2, 3, 5, 50, 4)
    println("SortedSet" + sortedSet)

    println(List[String]("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map { x => (x, 1) }.map(x => x._2).reduce(_ + _))
    println(List[String]("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map {
      (_, 1)
    }.map(_._2).reduce(_ + _))
    println(List[String]("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map {
      (_, 1)
    }.map(_._2).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)
  }
}

以上内容来自[DT大数据梦工厂]首席专家Spark专家王家林老师的课程分享。感谢王老师的分享,更多精彩内容请扫描关注[DT大数据梦工厂]微信公众号DT_Spark

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值