scala练习笔记

于2017-02-15由小牛君创建

分享到:


 //创建一个List
    val lst0 = List(1,7,9,8,0,3,5,4,6,2)
    //将lst0中每个元素乘以10后生成一个新的集合
    lst0.map(_ * 10)
    
    //将lst0中的偶数取出来生成一个新的集合
    lst0.filter(_ % 2 == 0).map(_ * 10)
    
    //将lst0排序后生成一个新的集合
    lst0.sortWith(_ > _)
    lst0.sortBy(t => t + "") 
    
    //反转顺序
    lst0.sortWith(_ > _).reverse
    //将lst0中的元素4个一组,类型为Iterator[List[Int]]
    lst0.grouped(4)
    
    //将Iterator转换成List
    lst0.grouped(4).toList
    //将多个list压扁成一个List
    lst0.grouped(4).toList.flatten
    
    val lines = List("hello tom hello jerry", "hello jerry", "hello kitty")
    //先按空格切分,在压平
    lines.flatMap(l => l.split(" ")).map(w => (w, 1)).groupBy(t => t._1).mapValues(v => v.length).toList.sortBy(t => t._2).reverse

    //并行计算求和
    lst0.par
    //化简:reduce
    //将非特定顺序的二元操作应用到所有元素
    
    
    //按照特定的顺序
    lst0.reduce(_+_)
    lst0.reduceLeft(_+_)

    //折叠:有初始值(无特定顺序)柯里化
    lst0.fold(10)(_+_)
    
    //折叠:有初始值(有特定顺序)
    lst0.foldLeft(10)(_+_)


    //聚合
    val arr = List(List(1, 2, 3), List(3, 4, 5), List(2), List(10))
    aggregate

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

    
    
val lines = List("hello tom hello jerry", "hello jerry", "hello kitty")
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).mapValues(_.foldLeft(0)(_+_._2))
lines.flatMap(_.split(" ")).map((_, 1)).groupBy(_._1).map(t=>(t._1, t._2.size)).toList.sortBy(_._2).reverse