// Copyright 2003, FreeHEP. package hep.graphics.heprep.util; import java.util.*; /** * This Set is created from a Map and will allow iteration over its values as a Set. * This implies that all values added to the Map are distinctive, for instance because * each value contains its own key. The methods equals() and hashCode() of the values * need to be implemented properly for this to work. * * @author M.Donszelmann * @version $Id: ValueSet.java 8584 2006-08-10 23:06:37Z duns $ */ public class ValueSet extends AbstractSet { private Map map; /** * Construct a ValueSet of the entries in this Map. Map is allowed to be null which results in * an empty set. * @param map map to use for value set */ public ValueSet(Map map) { this.map = map; } public Iterator iterator() { Iterator r; if (map == null) { r = new Iterator() { public boolean hasNext() { return false; } public Object next() { throw new NoSuchElementException(); } public void remove() { throw new UnsupportedOperationException(); } }; } else { r = new Iterator() { private Iterator i = map.entrySet().iterator(); public boolean hasNext() { return i.hasNext(); } public Object next() { return ((Map.Entry)i.next()).getValue(); } public void remove() { i.remove(); } }; } return r; } public int size() { return (map == null) ? 0 : map.size(); } public boolean contains(Object v) { return (map == null) ? false : map.containsValue(v); } }