package org.tessell.util;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class MapToList<K, V> extends LinkedHashMap<K, List<V>> {
private static final long serialVersionUID = -1;
public MapToList() {
}
public MapToList(MapToList<K, V> copy) {
for (Map.Entry<K, List<V>> e : copy.entrySet()) {
put(e.getKey(), new ArrayList<V>(e.getValue()));
}
}
@SuppressWarnings("unchecked")
@Override
public List<V> get(Object key) {
List<V> values = super.get(key);
if (values == null) {
values = (List<V>) new ArrayList<Object>();
put((K) key, values);
}
return values;
}
public void add(Object key) {
get(key);
}
public void add(Object key, V value) {
get(key).add(value);
}
public boolean remove(Object key, Object value) {
return get(key).remove(value);
}
public V removeOne(Object key) {
List<V> values = super.get(key);
if (values == null) {
return null;
}
V value = values.remove(0);
if (values.size() == 0) {
remove(key);
}
return value;
}
}