package quickml.data;
import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Created by chrisreeves on 8/12/14.
*/
public class PredictionMap implements Map<Serializable, Double>{
private final Map<Serializable, Double> map;
private final Double defaultValue = Double.valueOf(0);
public PredictionMap(Map<Serializable, Double> map) {
this.map = map;
}
public static PredictionMap newMap(){
return new PredictionMap(new HashMap<Serializable, Double>());
}
@Override
public int size() {
return map.size();
}
@Override
public boolean isEmpty() {
return map.isEmpty();
}
@Override
public boolean containsKey(Object key) {
return map.containsKey(key);
}
@Override
public boolean containsValue(Object value) {
return map.containsValue(value);
}
@Override
public Double get(Object key) {
Double value = map.get(key);
return value != null ? value : defaultValue;
}
@Override
public Double put(Serializable key, Double value) {
return map.put(key,value);
}
@Override
public Double remove(Object key) {
return map.remove(key);
}
@Override
public void putAll(Map<? extends Serializable, ? extends Double> m) {
map.putAll(m);
}
@Override
public void clear() {
map.clear();
}
@Override
public Set<Serializable> keySet() {
return map.keySet();
}
@Override
public Collection<Double> values() {
Collection<Double> values = map.values();
values.add(defaultValue);
return values;
}
@Override
public Set<Entry<Serializable, Double>> entrySet() {
return map.entrySet();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
PredictionMap that = (PredictionMap) o;
if (defaultValue != null ? !defaultValue.equals(that.defaultValue) : that.defaultValue != null) return false;
if (map != null ? !map.equals(that.map) : that.map != null) return false;
return true;
}
@Override
public int hashCode() {
int result = map != null ? map.hashCode() : 0;
result = 31 * result + (defaultValue != null ? defaultValue.hashCode() : 0);
return result;
}
@Override
public String toString() {
return map.toString();
}
}