// Copyright 2003, FreeHEP.
package hep.graphics.heprep.util;
import java.util.*;
/**
* Extends a Map and keeps a List to be able to return the list of Values.
*
* @author M.Donszelmann
*
* @version $Id: HashMapList.java 8584 2006-08-10 23:06:37Z duns $
*/
public class HashMapList extends HashMap implements MapList {
private List list = new ArrayList();
public void clear() {
super.clear();
list.clear();
}
public Object put(Object key, Object value) {
Object old = super.put(key, value);
if (old != null) list.remove(old);
list.add(value);
return old;
}
public void putAll(Map t) {
for (Iterator i=t.entrySet().iterator(); i.hasNext(); ) {
Map.Entry entry = (Map.Entry)i.next();
put(entry.getKey(), entry.getValue());
}
}
public Object remove(Object key) {
Object value = super.remove(key);
if (value != null) list.remove(value);
return value;
}
public Collection values() {
return list;
}
public List valueList() {
return list;
}
public Set valueSet() {
Set s = new HashSet();
for (Iterator i=entrySet().iterator(); i.hasNext(); ) {
Map.Entry entry = (Map.Entry)i.next();
s.add(entry.getValue());
}
return s;
}
}