第37讲:List的foldLeftfoldRightsort操作代码实战

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第37讲:List的foldLeftfoldRightsort操作代码实战相关的知识,希望对你有一定的参考价值。

请看代码示例:

package com.dt.scala.dataset

object List_Fold_Sort {
  def main(args: Array[String]): Unit = {
    //Fold是折叠的意思,foldLeft就是从左折叠,foldRight就是从右折叠
    val list = List.range(1, 101) // 1 .. 100
    //foldLeft有两个参数:z 初始值,f 叠加函数
    var result = list.foldLeft(0)(_+_)
    //初始值于第一个元素做加法运算,等到的结果和第二个再做加法,以此类推下去
    println(result) // 5050
    //还有一个简化的写法,如下
    result = (0 /: list)(_+_) 
    
    println(List.range(1, 5).foldLeft(100)(_-_))  // 100-1-2-3-4 = 90
     
    // /:方法与foldLeft 相同 。 
    
    //foldRight 于foldLeft类似,只不过是从列表的尾部叠加函数
    println(List.range(1, 5).foldRight(100)(_-_))  // 1-(2-(3-(4-100))) = 98
    
    //foldLeft于reduce的区别,reduce不用提供初始值
    println(list.reduce(_+_)) //5050
    
    val list2 = List(3,9,1,4,8,7)
    //Sorted Will sort the list using the natural ordering
    //升序排列列表
    println(list2.sorted)
    //降序
    println(list2.sorted(Ordering.Int.reverse))
    // 使用特殊的算法排序
    val list3 = List("Spark","Hadoop","Zookeeper","Scala Language")
    //按照元素长度排序
    println(list3.sortWith(_.length > _.length))
    //按照首字母排序
    println(list3.sortWith(_.head < _.head)) 
    // 按照符合条件排序
    println(list3.sortBy(x =>(x.head,x.length())))
    
  }
}


本文出自 “叮咚” 博客,请务必保留此出处http://lqding.blog.51cto.com/9123978/1742077

以上是关于第37讲:List的foldLeftfoldRightsort操作代码实战的主要内容,如果未能解决你的问题,请参考以下文章

第35讲:List的mapflatMapforeachfilter操作代码实战

第011讲:列表:一个打了激素的数组2

第38讲:List伴生对象操作方法代码实战

第37讲 谈谈Spring Bean的生命周期和作用域

第33讲:List的一阶函数操作代码实战详解

第11讲-Java泛型和文件操作