Skip to content
This repository was archived by the owner on Dec 22, 2021. It is now read-only.

Commit 20fb269

Browse files
committed
Optimize groupBy for LazyList
1 parent c864935 commit 20fb269

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/main/scala/strawman/collection/immutable/LazyList.scala

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,15 @@ class LazyList[+A](expr: => LazyList.Evaluated[A])
3737
protected[this] def fromSpecificIterable(coll: collection.Iterable[A]): LazyList[A] = fromIterable(coll)
3838

3939
def groupBy[K](f: A => K): immutable.Map[K, LazyList[A]] = {
40-
var result = immutable.Map.empty[K, LazyList[A]]
40+
val m = mutable.Map.empty[K, LazyList[A]]
4141
for (elem <- coll) {
4242
val key = f(elem)
43-
val values = elem #:: result.getOrElse(key, LazyList.Empty)
44-
result = result + ((key, values))
43+
val values = m.get(key).getOrElse(LazyList.Empty)
44+
m += ((key, elem #:: values))
45+
}
46+
var result = immutable.Map.empty[K, LazyList[A]]
47+
m.foreach { case (k, v) =>
48+
result = result + ((k, v))
4549
}
4650
result
4751
}

0 commit comments

Comments
 (0)