码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-07-05 15:53:17      阅读:187      评论:0      收藏:0      [点我收藏+]

标签:组成   列表   匿名函数   技术分享   过滤   需要   排序   blog   ping   

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 操作

技术分享

 

 

 

 

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

标签:组成   列表   匿名函数   技术分享   过滤   需要   排序   blog   ping   

原文地址:http://www.cnblogs.com/IChing/p/7121730.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!