美文网首页
函数式编程练习之常用方法

函数式编程练习之常用方法

作者: lehuai | 来源:发表于2018-01-03 10:00 被阅读0次
package day02

/**
  * 函数编程练习之常用方法
  * reduce
  * fold
  * aggregate
  * 交并差集
  */
object Exercise {
  def main(args: Array[String]): Unit = {

    // 创建一个List
    val list0 = List(5,7,1,9,3,8,6,2,0,4)

    //将lst0中每个元素乘以2后生成一个新的集合
    val list1 = list0.map(_ * 2)

    //将lst0中的偶数取出来生成一个新的集合
    val list2 = list0.filter(_ % 2 == 0)

    //将lst0排序后生成一个新的集合
    val list3 = list0.sorted

    //反转排序顺序
    val list4 = list3.reverse

    //将lst0中的元素4个一组,类型为Iterator[List[Int]]
    val it = list0.grouped(4)

    //将Iterator转换成list
    val list5 = it.toList

    //将多个list压扁成一个list
    val list6 = list5.flatten

    val lines = List("hello java hello scala","hello scala","hello python")
    //先按空格切分,再压平
//    val words = lines.map(_.split(" "))
//    val flatWords = words.flatten
//    val res = lines.flatMap(_.split(" "))

    //并行计算求和
    val arr = Array(1,2,3,4,5,6,7,8,9,10)
//和线程有关,每个线程计算一部分,( (1+2+3+4) + (5+6+7+8) +(9+10) )
//    val res = arr.sum
//    val res = arr.par.sum

    //按照特定的顺序进行聚合
    // (((1+2)+3)+4)+5....
//    val res = arr.reduce(_+_)
//    val res = arr.reduceLeft(_+_)
      // 实现并行方式进行聚合
//    val res = arr.par.reduce(_+_)
//    val res = arr.par.reduce(_-_)

    //折叠,有初始值(无特定顺序)
//    val res = arr.par.fold(10)(_+_)

    //折叠,有初始值(有特定顺序)
//    val res = arr.foldLeft(10)(_+_)
//    val res = arr.foldRight(10)(_+_)
//    val res = arr.foldLeft(10)(_-_)
//    val res = arr.par.foldLeft(10)(_-_)

    //聚合
    val list7 = List(List(1,2,3),List(3,4,5),List(2),List(0))
//    val res = list7.flatten.reduce(_+_)
//    val res = list7.aggregate(0)(_+_.sum,_+_)

    val l1 = List(5,6,4,7)
    val l2 = List(1,2,3,4)
    //求并集
//    val res = l1 union l2

    //求交集
//    val res = l1 intersect l2
    //求差集
    val res = l1 diff l2
    println(res)

  }
}

相关文章

  • 函数式编程练习之常用方法

  • JavaScript之函数式编程

    啥是函数式编程? 函数式编程(Functional Programming, FP),是一种编程范式,常用的编程范...

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

  • freeCodeCamp 旅途8 - 函数式编程

    函数式编程 函数式编程是一种基于函数计算的软件开发方法。像数学一样,函数在编程中通过输入产生输出。函数式编程遵循几...

  • 函数式编程从零到一

    从零到一:很纯的函数式 从干活的角度看待函数式编程和一般的编程方法 函数addOne是一个函数式编程的写法 函数a...

  • 简单的函数式编程Demo

    函数式编程思想:把操作尽可能的写成一系列的函数嵌套或者方法调用; 函数式编程本质:就是往方法中传入block,方法...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • 12.函数式接口

    主要内容 自定义函数式接口 函数式编程 常用函数式接口 第一章 函数式接口 1.1 概念 函数式接口在Java中是...

  • Java 函数式编程实例

    函数式编程概念 函数式编程是一种编程的范式和编程的方法论(programming paradigm),它属于结构化...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

网友评论

      本文标题:函数式编程练习之常用方法

      本文链接:https://www.haomeiwen.com/subject/nxthnxtx.html