【问题标题】:How can I break a collection into batches?如何将集合分成批次?
【发布时间】:2013-05-23 22:46:26
【问题描述】:

我在这里有一个简单的任务:根据批量大小将包含 n 个元素的集合分解为 m 个集合 - 通常我希望将我的子集合限制为 1,000 个元素。我写了这样的东西,输入是主,大集合:

var strings = Set[String]() ++ input
var sets = List[Set[String]]()
while (!strings.isEmpty) {
  val (head, rest) = strings.splitAt(100)
  sets = sets :+ head
  securities = rest
}

效果很好,但我认为必须有一个更优雅/更实用的解决方案来解决 Scala 中这样一个简单而常见的问题。有人请赐教。

【问题讨论】:

    标签: scala scala-collections


    【解决方案1】:

    它存在:.grouped(batchSize)。示例:

    scala> List.range(1,10).toSet.grouped(3).toList
    // res0: List[scala.collection.immutable.Set[Int]] = List(
    //    Set(5, 1, 6), 
    //    Set(9, 2, 7), 
    //    Set(3, 8, 4))
    

    【讨论】:

      【解决方案2】:

      只需拨打Set(1,2,3).grouped(1).toList

      scala> Set(1,2,3).grouped(1).toList
      res1: List[scala.collection.immutable.Set[Int]] = List(Set(1), Set(2), Set(3))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-26
        • 2017-05-30
        • 2021-12-20
        • 2020-06-06
        • 1970-01-01
        • 2013-02-19
        • 1970-01-01
        相关资源
        最近更新 更多