大数据学习——scala集合练习

package com

/**
  * Created by ZX on 2016/4/5.
  */
object ListTest {
  def main(args: Array[String]) {
    //建立一个List
    val lst0 = List(1,7,9,8,0,3,5,4,6,2)
    //将lst0中每一个元素乘以10后生成一个新的集合
    val lst01=lst0.map(_ * 10)
    println("lst01"+lst01)

    val lst1 = lst0.map(x => x * 2)
    //将lst0中的偶数取出来生成一个新的集合
    val lst02=lst0.filter(_ % 2==0)
    println("lst02"+lst02)

    val lst2 = lst0.filter(x => x % 2 == 0)
    //将lst0排序后生成一个新的集合
    //正序
    val lst03=lst0.sorted
    println("lst03"+lst03)
    //倒序
    val lst04=lst0.sorted.reverse
    println("lst04"+lst04)


    val lst3 = lst0.sorted
    val lst4 = lst0.sortBy(x => x)
    val lst5 = lst0.sortWith((x, y) => x < y)
    //反转顺序
    val lst6 = lst3.reverse
    //将lst0中的元素4个一组,类型为Iterator[List[Int]]

    val lst05=lst0.grouped(4)
//    println("lst05"+lst05.toList)

    val it = lst0.grouped(4)
    //将Iterator转换成List
    val lst7 = it.toList
    //将多个list压扁成一个List
    val lst8 = lst7.flatten

    val lst06=lst05.toList.flatten
    println("lst06"+lst06)

    //先按空格切分,在压平
    val a = Array("a b c", "d e f", "h i j")
    val lst07=a.flatMap(_.split(" "))
    println("lst07"+lst07.toList.flatten)

    a.flatMap(_.split(" "))

    lst0.reduce(_+_)
    lst0.fold(10)(_+_)

    //并行计算求和
    lst0.par.sum
    lst0.par.map(_ % 2 == 0)
    lst0.par.reduce((x, y) => x + y)
    //化简:reduce
    //将非特定顺序的二元操做应用到全部元素
    val lst9 = lst0.par.reduce((x, y) => x + y)
    //按照特定的顺序
    val lst10 = lst0.reduceLeft(_+_)

    //折叠:有初始值(无特定顺序)
    val lst11 = lst0.par.fold(100)((x, y) => x + y)
    //折叠:有初始值(有特定顺序)
    val lst12 = lst0.foldLeft(100)((x, y) => x + y)


    //聚合
    val arr = List(List(1, 2, 3), List(3, 4, 5), List(2), List(0))
    val result = arr.aggregate(0)(_+_.sum, _+_)

    val l1 = List(5,6,4,7)
    val l2 = List(1,2,3,4)
    //求并集
    val r1 = l1.union(l2)
    //求交集
    val r2 = l1.intersect(l2)
    //求差集
    val r3 = l1.diff(l2)
    val r4 = l2.diff(l1)
    println(r1)
    println(r2)
    println(r3)
    println(r4)

    val m = Map(("a", 1))

  }
}

 

    val array = Array(1, 2, 3, 4, 5)
    println(array.fold(0)(_ + _))
//结果15  0+1+2+3+4+5

 

    //并行集合
    println(array.par.sum)
    println(array.par.reduce(_+_))
    println(array.reduceLeft(_+_))
    println(array.foldLeft(10)(_+_))

 

    //聚合
    val arrList=List(List(100,2,3),List(3,4,5),List(4,5))
    val res=arrList.aggregate(10)(_+_.sum,_+_)
    println(res)