6

ここでのタスクは簡単です。バッチ サイズに基づいて、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 のこのような単純で一般的な問題に対して、よりエレガントで機能的なソリューションが必要であると考えています。誰か教えてください。

4

2 に答える 2

15

そしてそれは存在します: .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))
于 2013-05-23T14:23:15.103 に答える
1

電話するだけ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))
于 2013-05-23T14:22:53.183 に答える