scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作

1. scala 的列表List 和集Set 的操作

  //Set 和list 差不多,不过 Set 中不允许有重复的元素   var set=scala.collection.mutable.Set[Int]();        //+ 会产生一个新的对象,而不是在set 中动态增加    set.+(1)    //+= 会在原先的set 中动态的增加元素而不是产生一个新的对象。    set.+=(1,2,3)        //这个会输出一个排序以后的 集合 比如 输入 7,4,8,6,1 输出  1,46,7,8    import scala.collection.mutable.SortedSet        var sort=SortedSet[Int]()    sort.+=(7,4,8,6,1)        sort.foreach(println)

 2. 集合的函数组合子(Functional Combinators)

map

map对列表中的每个元素应用一个函数,返回应用后的元素所组成的列表。

  var lst=List(1,2,3,4)

    //Map 映射到list 集合中的没一位,然后结构乘以2
    lst.map((x:Int)=>x*2)
    //上一步的匿名函数简化 去掉类型,系统推断类型
    lst.map(x=>x*2)
    //进一步简化直接写返回表达式
    var li= lst.map(_*2)

    for(x<-li)
      println(x)

foreach

foreach很像map,但没有返回值。foreach仅用于有副作用[side-effects]的函数。

   var lst=List(1,2,3,4)

    //用foreach 输出list中的参数
    lst.foreach((x:Int)=>{println(x*2)})

    //精简后的foreach
    lst.foreach(_*2)

filter

filter移除任何对传入函数计算结果为false的元素。返回一个布尔值的函数通常被称为谓词函数[或判定函数]。

    var lst=List(1,2,3,4)

    //过滤>2 的所有蒜素
    lst.filter((x:Int)=>x>2).foreach(println)
    //精简后的结构
    lst.filter(_>2).foreach(println)

flatten

flatten将嵌套结构扁平化为一个层次的集合。

flatMap

flatMap是一种常用的组合子,结合映射[mapping]和扁平化[flattening]。 flatMap需要一个处理嵌套列表的函数,然后将结果串连起来。

Reduce

  reduece  下面的函数 通过reduce 把所有的参数相加

fold

fold 类似于reduce 不过不同的是 fold 需要两个参数,一个参数用来设置偏移量, 比如下面的例子,偏移量是10 ,加上reduce 运算的10 得20

zip

zip将两个列表的内容聚合到一个对偶列表中。

sum,max,min 操作

 
时间: 2024-10-05 04:51:42

scala 高级十六 scala 集合和集合的高级特性 map flatten fllatmap zip reduce zip 等操作的相关文章

scala 高级十五 scala 高介函数式编程

1.高阶函数主要有两种:一种是将一个函数当做另外一个函数的参数(即函数参数):另外一种是返回值是函数的函数. 2.值函数,我们可以用 var或者val 定义一个参数去接收一个函数叫做值函数 ,格式为 var fun_name=funName _ 上图我们定了一个 add函数有两个参数,返回一个int 类型, 然后用吧定义好的add 函数传值给 fun_add   var fun_add=add _  然后用fun_add(2,7) 去调用函数 3.函数的嵌套 //嵌套函数的使用在函数体再定义一个

scala 高级十八 scala隐式方法,隐式参数的实现和使用

摘要: 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 使用方式: 1.将方法或变量标记为implicit 2.将方法的参数列表标记为implicit 3.将类标记为implicit 隐式方法: package smart.iot import java.io.File import scala.io.Source class concealFunc(f:File) { d

scala 基础十二 scala apply的使用,工厂方法和单例模式的实现

1. apply 可以用来实现类似于静态的初始化类的实例,请看下面实例 package smart.iot class applyclass { } class A { def apply()=println("hello class A"); } object B { def apply()=println("hello object B"); } object applyRun { def main(args: Array[String]): Unit = {

python成长之路【第十六篇】:JavaScript的高级知识---词法分析

一.词法分析方法 js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 二.具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active Object),简称AO分析参数: 函数接收形式参数,添加到AO的属性,并且这个时候值为undefine,例如AO.age=undefine 接收实参,添加到AO的属性,覆盖之前的undefine分析变量声明,如var age;或var age=23; 如果上一步分析参数中AO还没有age属性,则添加

Scala 系列(六)—— 常用集合类型之 List &amp; Set

一.List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表. scala> val list = List("hadoop", "spark", "storm") list: List[String] = List(hadoop, spark, storm) // List 是不可变 scala> list

JAVA-集合作业-已知有十六支男子足球队参加2008 北京奥运会。写一个程序,把这16 支球队随机分为4 个组。采用List集合和随机数

第二题 已知有十六支男子足球队参加2008 北京奥运会.写一个程序,把这16 支球队随机分为4 个组.采用List集合和随机数 2008 北京奥运会男足参赛国家: 科特迪瓦,阿根廷,澳大利亚,塞尔维亚,荷兰,尼日利亚.日本,美国,中国,新西 兰,巴西,比利时,韩国,喀麦隆,洪都拉斯,意大利 package Test03; import java.util.ArrayList; import java.util.List; import java.util.Random; public class

Scala入门到精通——第十六节 泛型与注解

本节主要内容 泛型(Generic Type)简介 注解(Annotation)简介 注解常用场景 1. 泛型(Generic Type)简介 泛型用于指定方法或类可以接受任意类型参数,参数在实际使用时才被确定,泛型可以有效地增强程序的适用性,使用泛型可以使得类或方法具有更强的通用性.泛型的典型应用场景是集合及集中中的方法参数,可以说同java一样,scala中泛型无处不在,具体可以查看scala的api //单个泛型参数的使用情况 class Person[T](var name:T) cla

[Scala基础系列 07]Scala集合

Scala有一个非常通用,丰富,强大,可组合的集合库:集合是高阶的(high level)并暴露了一大套操作方法.很多集合的处理和转换可以被表达的简洁又可读,但不审慎地用它们的功能也会导致相反的结果.每个Scala程序员应该阅读 集合设计文档:通过它可以很好地洞察集合库,并了解设计动机. 1.数组(Array&ArrayBuffer) 1.1.Array 数组(Array)其实并不在scala.collection包里面,它属于scala包,直接对应于Java的数组,比如,Scala中的Arra

scala的多种集合的使用(6)之映射Map的操作方法

1.创建映射 1)创建不可变的映射 scala> val status = Map(1 -> "a",2 -> "b") status: scala.collection.immutable.Map[Int,String] = Map(1 -> a, 2 -> b) scala> val status = Map((1,"a"),(2,"b")) status: scala.collecti