Scala 容器与类型系统之编程进阶(3)

本篇博客主要介绍Scala中容器的使用以及类型系统的使用语法:

1.Scala 容器的使用

/*Scala的集合体系中Iterable是共同的Trait,Iterable要继承实现一些共同的方法,例如对元素的遍历

Array是一个非常基础的数据结构,不从属于Scala集合体系
Scala集合体系中集合分为可变集合和不可变集合之分;不可变集合在scala.collection.immutable中可变集合在scala.collection.mutable
List 是元素列表集合,是不可变的
第一点:List的head是指第一个元素,tail是指剩下的元素构成的集合
第二点:使用::这个操作符来把List和其他的元素进行组拼来构成新的List
如果集合中没有元素的话,此时为Nil,如果说List中只有一个元素,那么head就是这个集合本身,tail操作会返回Nil
LinkedList 是元素可变的列表
Set是元素不可重复的集合,且元素是无序的;HashSet中的元素不可变,且不能够保证顺序
LinkedHashSet会维护元素的插入顺序
Sorted会自动把插入的元素进行排序
  */


object Functional_Iterable {
  def main(args: Array[String]): Unit = {

/*第一点:List的head是指第一个元素,tail是指剩下的元素构成的集合
第二点:使用::这个操作符来把List和其他的元素进行组拼来构成新的List
如果集合中没有元素的话,此时为Nil,如果说List中只有一个元素,那么head就是这个集合本身,tail操作会返回Nil*/
    val range = 1 to 10
    val list = List(1,2,3,4,5)
    println(list.head)
    println(list.tail)
    /*
使用::这个操作符来把List和其他的元素进行组拼来构成新的List
如果集合中没有元素的话,此时为Nil,如果说List中只有一个元素,那么head就是这个集合本身,tail操作会返回Nil
*/
    println(0 :: list)

   //LinkedList 是元素可变的列表 
    var linkedList = scala.collection.mutable.LinkedList(1,2,3,4,5)
    println(linkedList.elem)
    println("-----")
    println(linkedList.tail)

  //增加元素9
   val copied = linkedList.+:(9)
   println(copied)
   //Set是元素不可重复的集合,且元素是无序的
   val set = Set(1,2,3,4,5)
    println(set)

    val setMore = set + 1
   println(setMore)

    //HashSet中的元素不可变,且不能够保证顺序
    val hashSet = scala.collection.mutable.HashSet(1,2,3)
    hashSet += 5
    hashSet += 50
    hashSet += 500
    hashSet += 5000
    hashSet += 50000
    println(hashSet)
    //LinkedHashSet会维护元素的插入顺序
    val linkedHashSet = scala.collection.mutable.LinkedHashSet(1,2,3)
    linkedHashSet += 5
    linkedHashSet += 50
    linkedHashSet += 4
    println(linkedHashSet)
    //Sorted会自动把插入的元素进行排序
     val sortedSet = scala.collection.mutable.SortedSet(1,2,3,4,5,54,6,4)
    println(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) }
        println("---------")
        List(0,1,2,3,4,5).foreach{println(_)}
        println("---------")
        List(0,1,2,3,4,5).foreach{println _}
        println("---------")
        List(0,1,2,3,4,5).foreach{println }
        println("---------")
        List(0,1,2,3,4,5).foreach(println)
  }
}

本博客内容来自于 : 简介: 王家林:DT大数据梦工厂创始人和首席专家. 联系邮箱18610086859@126.com 电话:18610086859 QQ:1740415547 微信号:18610086859

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值