我在这里有一个简单的任务:根据批量大小将一组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中这样一个简单而常见的问题。有人请赐教。
答案 0 :(得分:14)
它存在:.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))
答案 1 :(得分:0)
只需致电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))