
scalax.collection.immutable.EqSet.scala Maven / Gradle / Ivy
The newest version!
package scalax.collection.immutable
import scalax.collection.mutable.EqHashMap
/** Wrapper class mimicking a `scala.collection.immutable.Set`
* without copying the contents of the underlying `EqHashMap`.
*
* @define ON Creates a new `Set` as an O(N) operation
*/
final class EqSet[K <: AnyRef](map: EqHashMap[K,_])
extends Set[K] {
def contains(key: K) = map contains key
def iterator = map.keysIterator
/** $ON unless `elem` is already contained.*/
def +(elem: K) = if (map contains elem) this else {
val newMap = map.clone
newMap.asInstanceOf[EqHashMap[K,Any]] put (elem, true)
new EqSet(newMap)
}
/** $ON unless `elem` is not contained.*/
def -(elem: K) =
if (map contains elem) {
val newMap = map.clone
newMap -= elem
new EqSet(newMap)
} else this
override def size = map.size
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy