ux00ff

ビールとプログラミングと

StreamのGroupByは一度最後まで探す

実装がこうなってるので仕方がない。無限Streamに使うと倒れる。

動作として、GroupByした結果もStreamになって欲しかった気もあります。新しいグループキーが現れたらストリーム増える的に。

  def groupBy[K](f: A => K): immutable.Map[K, Repr] = {
    val m = mutable.Map.empty[K, Builder[A, Repr]]
    for (elem <- this) {
      val key = f(elem)
      val bldr = m.getOrElseUpdate(key, newBuilder)
      bldr += elem
    }
    val b = immutable.Map.newBuilder[K, Repr]
    for ((k, v) <- m)
      b += ((k, v.result))

    b.result
  }