栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

scala学习2-集合 计算高级函数

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

scala学习2-集合 计算高级函数

一.说明:

1.过滤 :遍历一个集合并从中获取满足指定条件的元素组成一个新的集合

2.映射(map):将集合中的一个每一个元素映射到某一函数

3.扁平化:将多个List[List[Int]]这样的一个集合打散,变成一个单一的List集合

4.扁平化+映射::flatMap 相当于先进行 map 操作,在进行 flatten 操作 集合中的每个元素的子元素映射到某个函数并返回新集合

5.分组(group):按照指定的规则对集合元素进行分组,返回一个Map

6.规约(reduce):通过指定的逻辑对集合中的数据进行聚合

7.折叠(flod):化简的另外一种形式

二.

1.

package scala.ssy.Learning.Six

object Test_Func {
  def main(args: Array[String]): Unit = {
    val list: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    val nestedList: List[List[Int]] = List(List(1, 2, 3), List(4, 5, 6), List(7, 8, 9))
    val wordList: List[String] = List("hello world", "hello spark", "hello scala")
      //(1)过滤,要满足一定条件
      println(list.filter(x => x % 2 == 0))
      println(list.filter(_%2==0))
      //(2)转化/映射
      println(list.map(x => x + 1))
      println(list.map(_+1))
      //(3)扁平化:打散 List(hello, world, hello, spark, hello, scala)
      println(nestedList.flatten)
      //(4)扁平化+映射 注:flatMap 相当于先进行 map 操作,在进行 flatten操作
      println(wordList.flatMap(x => x.split(" ")))
      println(wordList.flatMap(_.split(" ")))
      //(5)分组 最后得到的是个Map   HashMap(0 -> List(2, 4, 6, 8), 1 -> List(1, 3, 5, 7, 9))
      println(list.groupBy(x => x % 2))
      println(list.groupBy(_%2))
  }
}

 2.Reduce:

package scala.ssy.Learning.Six

object Test_Reduce {
  def main(args: Array[String]): Unit = {
    val list = List(1,2,3,4)
    // 将数据两两结合,实现运算规则
    val i: Int = list.reduce( (x,y) => x-y )
    println("i = " + i)
    // 从源码的角度,reduce 底层调用的其实就是 reduceLeft
    //val i1 = list.reduceLeft((x,y) => x-y)   1-2-3-4
    
    val i2 = list.reduceRight((x,y) => x-y)
    val i3=list.reduceRight(_ - _)// 1-(2-(3-4))
    println(i3)
    println(i2)
  }
}

3.Flod:

    val list = List(1,2,3,4)
    // fold 方法使用了函数柯里化,存在两个参数列表
    // 第一个参数列表为 : 零值(初始值)
    // 第二个参数列表为: 简化规则
    // fold 底层其实为 foldLeft
    val i = list.foldLeft(1)((x,y)=>x-y)
    // 1是初始的值  1-1-2-3-4
    val i1 = list.foldRight(10)((x,y)=>x-y)
    val i2= list.foldRight(10)(_ - _)
    // 10是初始值 1-(2-(3-(4-10)))
    println(i)
    println(i1)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/336848.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号