scala集合函数式编程使用示例

package com.sparktest

/**
  * 1.Scala的集合体系中Iterable是共同的Trait,Iterable要求继承者实现一些共同的方法,例如对元素的遍历等
  * 2.Array是一个非常基础的数据结构,不从属于scala的集合体系
  * 3.scala的集合体系中,集合分为可变集合和不可变集合:
  * 不可变集合在scala.collection.immutable包中
  * 可变集合在scala.collection.mutable包中
  * 4.List是元素的列表集合,是不可变的
  * 第一:Listhead是指第一个元素,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 = {

    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.head)
    println(linkedList.elem) //也是第一个元素
    println(linkedList.tail)

    while (linkedList != Nil) {
      println(linkedList.elem)
      linkedList = linkedList.tail
    }

    val copied = linkedList.+:(9)
    println(copied)

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

    val setMore = set + 1 //集合中添加元素
    println(setMore) //Set(1,2,3,4,5),元素不可重复

    val hashSet = scala.collection.mutable.HashSet(1, 2, 3)
    hashSet += 5
    hashSet += 50
    println(hashSet)

    val linkedHashSet = scala.collection.mutable.LinkedHashSet(1, 2, 3)
    linkedHashSet += 5
    linkedHashSet += 50
    println(linkedHashSet)

    val sortedSet = scala.collection.mutable.SortedSet(1, 2, 3, 5, 50, 4)
    println(sortedSet)




    List("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map { x => (x, 1) }
      .map { x => x._2}.reduce(_+_)
//  等价于
//  集合中,如果操作的只有一个输入元素,而且右侧只对这个输入元素只用一次的话,那么这个元素可以用_代替
    List("I am into Spark so much", "Scala is powerful").flatMap { x => x.split(" ") }.map {(_, 1) }
      .map { _._2}.reduce(_+_)//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) //只有一行的话,用()
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值