scala flatMap reduceLeft foldLeft

object collection_t1 {

  def flatMap1(): Unit = {
    val li = List(1,2,3)
    val res = li.flatMap(x => x match {
      case 3 => List(‘a‘,‘b‘)
      case _ => List(x*2)
    })
    println(res)
  }

  def map1(): Unit = {
    val li = List(1,2,3)
    val res = li.map(x => x match {
      case 3 => List(‘a‘,‘b‘)
      case _ => x*2
    })
    println(res)
  }

  def main(args: Array[String]): Unit = {
    flatMap1()
    map1()
  }
}

result: List(2, 4, a, b) List(2, 4, List(a, b))

flatMap就是在Map的基础上加了压平flatten的功能

foldLeft 从左边起折叠,累加

https://alvinalexander.com/scala/scala-reduceleft-examples

讲解reduceleft

时间: 2024-10-28 06:38:46

scala flatMap reduceLeft foldLeft的相关文章

(转)scala学习笔记(8): 列表的map,flatMap,zip和reduce

http://www.ituring.com.cn/article/131442 https://twitter.github.io/scala_school/zh_cn/collections.html#flatten 如果不了解map,flatMap,zip和reduce函数,你就不能真正地谈论scala.通过这些函数,我们可以非常容易地处理列表的内容并结合Option对象工作.你可以在这个站点找到更多的片段:Scala片段 1:FoldingScala 片段2:List的操作符魔法 让我们

【转】Scala 片段3:列表的map,flatMap,zip和reduce

原文链接 http://www.ituring.com.cn/article/131442 本文翻译自:Scala snippets 3: Lists together with Map, flatmap, zip and reduce [email protected] 如果不了解map,flatMap,zip和reduce函数,你就不能真正地谈论scala. 通过这些函数,我们可以非常容易地处理列表的内容并结合Option对象工作. 你可以在这个站点找到更多的片段: Scala片段 1:Fo

scala - 从合并两个Map说开去 - foldLeft 和 foldRight 还有模式匹配

开发中遇到需求:合并两个Map集合对象(将两个对应KEY的值累加) 先说解决方案: ( map1 /: map2 ) { case (map, (k,v)) => map + ( k -> (v + map.getOrElse(k, 0)) ) } 这特么什么鬼  (╯‵□′)╯""┻━┻☆))>○<) ......莫急,且听我慢慢道来......... 首先: Scala中现有的合并集合操作不能满足这个需求 . 注意合并后的结果a的G02的值其实是被覆盖掉了.

【转】Scala reduceLeft examples

原文链接 http://alvinalexander.com/scala/scala-reduceleft-examples The reduceLeft method on the Scala collections is fun. Just start with a collection: scala> val a = Array(20, 12, 6, 15, 2, 9) a: Array[Int] = Array(20, 12, 6, 15, 2, 9) Then give reduceL

scala 基础

// ::链接字符串 链接字符和list scala> val a = List(1,2,3) a: List[Int] = List(1, 2, 3) scala> val b = 0::a b: List[Int] = List(0, 1, 2, 3) scala> val c = "x"::"y"::"z" :: Nil c: List[String] = List(x, y, z) // :::链接两个list Any公

好程序员大数据学习路线分享Scala系列之集合操作函数

好程序员大数据学习路线继续为大家分享Scala系列之集合操作函数4.6 集合的重要函数4.6.1sum/max/min/count在序列中查找最大或最小值是一个极常见的需求,如下:val numbers = Seq(11, 2, 5, 1, 6, 3, 9) numbers.max //11 numbers.min //1 更高级的例子,其中包含一个书的序列case class Book(title: String, pages: Int) val books = Seq( Book("Futu

Programming in scala学习笔记(二)Next steps in scala

1 声明一个数组 Java的string数组声明如下: String[] greetStrings = new String()[4]; 数组索引跟java和c++/c语言不一样的是不用"[ ]",用"( )". 也可以用比较繁琐的方式声明数组: greetStrings是val常量,只能指向同一个Array对象,但是,greetStrings(0-2)的值是可变的. 2. 关于数组为什么不用"[ ]",用"( )" Arra

Spark RDD的fold和aggregate为什么是两个API?为什么不是一个foldLeft?

欢迎关注我的新博客地址:http://cuipengfei.me/blog/2014/10/31/spark-fold-aggregate-why-not-foldleft/ 大家都知道Scala标准库的List有一个用来做聚合操作的foldLeft方法. 比如我定义一个公司类: 1 case class Company(name:String, children:Seq[Company]=Nil) 它有名字和子公司. 然后定义几个公司: 1 val companies = List(Compa

从合并两个Map说开去 - foldLeft 和 foldRight 还有模式匹配

开发中遇到需求:合并两个Map集合对象(将两个对应Key的值累加) 先说解决方案: ( map1 /: map2 ) { case (map, (k,v)) => map + ( k -> (v + map.getOrElse(k, 0)) ) } 首先: Scala中现有的合并集合操作不能满足这个需求 . 注意合并后的结果a的G02的值其实是被覆盖掉了.. 然后: 说说那个表达式中(a /: b)( ... ) 这部分是什么鬼.这个其实是scala简化的foldLeft函数. 先看foldL