Skip to content

Commit 8e84fd3

Browse files
committed
Avoid updateWith
These mutable structures update rarely: normally they mutate. Since updateWith is for updating, just get the thing to mutate. Rarely, when the thing is empty, remove the key.
1 parent 13f2934 commit 8e84fd3

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

src/main/scala/scala/collection/mutable/MultiDict.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ class MultiDict[K, V] private (elems: Map[K, Set[V]])
3333

3434
def subtractOne(elem: (K, V)): this.type = {
3535
val (k, v) = elem
36-
val _ = elems.updateWith(k) {
37-
case existing @ Some(vs) =>
36+
elems.get(k) match {
37+
case Some(vs) =>
3838
vs.subtractOne(v)
39-
if (vs.isEmpty) None else existing
40-
case _ => None
39+
if (vs.isEmpty) elems.subtractOne(k)
40+
case _ =>
4141
}
4242
this
4343
}

src/main/scala/scala/collection/mutable/MultiSet.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ class MultiSetImpl[A] private[mutable] (elems: Map[A, AtomicInteger]) extends Mu
3131
}
3232

3333
def subtractOne(elem: A): this.type = {
34-
val _ = elems.updateWith(elem) {
35-
case existing @ Some(n) => if (n.decrementAndGet <= 0) None else existing
36-
case _ => None
34+
elems.get(elem) match {
35+
case Some(n) => if (n.decrementAndGet <= 0) elems.subtractOne(elem)
36+
case _ =>
3737
}
3838
this
3939
}

src/main/scala/scala/collection/mutable/SortedMultiDict.scala

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ class SortedMultiDict[K, V] private (elems: SortedMap[K, Set[V]])(implicit val o
3838

3939
def subtractOne(elem: (K, V)): this.type = {
4040
val (k, v) = elem
41-
val _ = elems.updateWith(k) {
42-
case existing @ Some(vs) =>
41+
elems.get(k) match {
42+
case Some(vs) =>
4343
vs.subtractOne(v)
44-
if (vs.isEmpty) None else existing
45-
case _ => None
44+
if (vs.isEmpty) elems.subtractOne(k)
45+
case _ =>
4646
}
4747
this
4848
}

src/main/scala/scala/collection/mutable/SortedMultiSet.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,9 @@ class SortedMultiSet[A] private (elems: SortedMap[A, AtomicInteger])(implicit va
3535
}
3636

3737
def subtractOne(elem: A): this.type = {
38-
val _ = elems.updateWith(elem) {
39-
case existing @ Some(n) => if (n.decrementAndGet <= 0) None else existing
40-
case _ => None
38+
elems.get(elem) match {
39+
case Some(n) => if (n.decrementAndGet <= 0) elems.subtractOne(elem)
40+
case _ =>
4141
}
4242
this
4343
}

0 commit comments

Comments
 (0)