Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* Soot - a J*va Optimization Framework
   * Copyright (C) 2002 Ondrej Lhotak
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this library; if not, write to the
  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
  * Boston, MA 02111-1307, USA.
  */
 
 package soot.util;
 import java.util.*;

A map with sets as values, HashMap implementation.

Author(s):
Ondrej Lhotak
 
 
 public class HashMultiMap implements MultiMap {
     Map<Object,Setm = new HashMap<Object,Set>(0);
 
     public HashMultiMap() {}
     public HashMultiMapMultiMap m ) {
 	putAllm );
     }
     public void putAllMultiMap m ) {
 	Iterator it = m.keySet().iterator();
 	whileit.hasNext() ) {
 	    Object o = it.next();
 	    putAllom.geto ) );
 	}
     }
     public boolean isEmpty() {
 	return numKeys() == 0;
     }
     public int numKeys() {
 	return .size();
     }
     public boolean containsKeyObject key ) {
 	return .containsKeykey );
     }
     public boolean containsValueObject value ) {
 	Iterator<Setit = .values().iterator();
 	whileit.hasNext() ) {
 	    Set s = it.next();
 	    ifs.containsvalue ) ) return true;
 	}
 	return false;
     }
     protected Set newSet() {
 	return new HashSet(4);
     }
     private Set findSetObject key ) {
 	Set s = .getkey );
 	ifs == null ) {
 	    s = newSet();
 	    .putkeys );
 	}
 	return s;
     }
     public boolean putObject keyObject value ) {
 	return findSetkey ).addvalue );
     }
     public boolean putAllObject keySet values ) {
 	if (values.isEmpty()) return false;
 	return findSetkey ).addAllvalues );
     }
     public boolean removeObject keyObject value ) {
 	Set s = .getkey );
 	ifs == null ) return false;
 	boolean ret = s.removevalue );
 	ifs.isEmpty() ) {
 	    .removekey );
 	}
 	return ret;
     }
     public boolean removeObject key ) {
 	return null != .removekey );
     }
     public boolean removeAllObject keySet values ) {
         Set s = .getkey );
         ifs == null ) return false;
         boolean ret = s.removeAllvalues );
         ifs.isEmpty() ) {
             .removekey );
         }
         return ret;
     }
     public Set getObject o ) {
 	Set ret = .geto );
	ifret == null ) return .;
	return Collections.unmodifiableSet(ret);
    }
    public Set keySet() {
	return .keySet();
    }
    public Set values() {
	Set ret = new HashSet(0);
	whileit.hasNext() ) {
	    Set s = it.next();
	    ret.addAlls );
	}
	return ret;
    }
    public boolean equalsObject o ) {
	if( ! (o instanceof MultiMap) ) return false;
	MultiMap mm = (MultiMapo;
	if( !keySet().equalsmm.keySet() ) ) return false;
	whileit.hasNext() ) {
	    Map.Entry e = (Map.Entryit.next();
	    Set s = (Sete.getValue();
	    if( !s.equalsmm.gete.getKey() ) ) ) return false;
	}
	return true;
    }
    public int hashCode() {
	return .hashCode();
    }
New to GrepCode? Check out our FAQ X