diff options
Diffstat (limited to 'src/main/scala/forge/Util.scala')
-rw-r--r-- | src/main/scala/forge/Util.scala | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/src/main/scala/forge/Util.scala b/src/main/scala/forge/Util.scala index 0a751da5..15d3e176 100644 --- a/src/main/scala/forge/Util.scala +++ b/src/main/scala/forge/Util.scala @@ -19,15 +19,16 @@ class MultiBiMap[K, V](){ valueToKey(v) = k keyToValues(k) = v :: keyToValues.getOrElse(k, Nil) } - def removeAll(k: K): Seq[V] = { - val vs = keyToValues(k) - for(v <- vs){ - valueToKey.remove(v) - } - vs + def removeAll(k: K): Seq[V] = keyToValues.get(k) match { + case None => Nil + case Some(vs) => + vs.foreach(valueToKey.remove) + + keyToValues.remove(k) + vs } def addAll(k: K, vs: Seq[V]): Unit = { - for(v <- vs) valueToKey(v) = k + vs.foreach(valueToKey.update(_, k)) keyToValues(k) = vs ++: keyToValues.getOrElse(k, Nil) } } |