Scala中sliding与grouped的区别

  • 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中用Array[T]的形式来表示Java中的数组形式 T[]。 v...
    时待吾阅读 967评论 0 0
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,767评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,854评论 18 139
  • Scala的集合类可以从三个维度进行切分: 可变与不可变集合(Immutable and mutable coll...
    时待吾阅读 5,848评论 0 4
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399