美文网首页spark||flink||scala数客联盟
Scala中sliding与grouped的区别

Scala中sliding与grouped的区别

作者: Woople | 来源:发表于2016-09-24 21:02 被阅读2523次
    • def sliding(size: Int, step: Int): Iterator[Iterable][A]]
      Example:
    scala> val xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    xs: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    
    scala> xs.sliding(4,2).foreach(println)
    List(1, 2, 3, 4)
    List(3, 4, 5, 6)
    List(5, 6, 7, 8)
    List(7, 8, 9)
    

    可见,sliding第一个参数的含义是几个元素组成一个List,本例中第一个参数是4,所以是每4个元素组成一个List,剩余元素不够的组成一个List。
    第二个参数的含义可以理解为,每次List第一个元素相对上一个List的第一个元素移动的步数。例如本例第二个参数是2,那么第一个List的第一个元素是1;第二个List的第一个元素向后移动2位,就是3;第三个List相对第二个List的第一个元素3,再向后移动2位,就是5;以此类推。

    def sliding(size: Int): Iterator[Iterabl)[A]] 的含义是,如果不指定step,默认step是1。

    • def grouped(size: Int): Iterator[Iterable[A]]
      当size和step相等的时候,可以简化使用grouped方法
    scala> val xs = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    xs: List[Int] = List(1, 2, 3, 4, 5, 6, 7, 8, 9)
    
    scala> xs.sliding(4,4).foreach(println)
    List(1, 2, 3, 4)
    List(5, 6, 7, 8)
    List(9)
    
    scala> xs.grouped(4).foreach(println)
    List(1, 2, 3, 4)
    List(5, 6, 7, 8)
    List(9)
    

    相关文章

      网友评论

        本文标题:Scala中sliding与grouped的区别

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