summaryrefslogblamecommitdiff
path: root/sources/scala/collection/mutable/MultiMap.scala
blob: 7bc6cc2518e097b03051b6034fed429e5c6e0aa4 (plain) (tree)

































                                                                          
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2003, LAMP/EPFL                  **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
** $Id$
\*                                                                      */

package scala;


trait MultiMap[A, B] extends MutableMap[A, MutableSet[B]] {
    protected def makeSet: MutableSet[B] = new HashSet[B];

    def add(key: A, value: B): Unit = get(key) match {
        case None => val set = makeSet;
                     set.add(value);
                     update(key, set);
        case Some(set) => set.add(value);
    }

    override def remove(key: A) = super.remove(key);

    override def remove(key: A, value: B) = get(key) match {
        case None =>
        case Some(set) => set.remove(value);
    }

    def exists(key: A, p: B => Boolean): Boolean = get(key) match {
        case None => false
        case Some(set) => set.exists(p);
    }
}