package aima.core.search.framework; import java.util.Hashtable; import java.util.Set; import java.util.TreeMap; /** * Stores key-value pairs for efficiency analysis. * * @author Ravi Mohan * @author Ruediger Lunde */ public class Metrics { private Hashtable<String, String> hash; public Metrics() { this.hash = new Hashtable<String, String>(); } public void set(String name, int i) { hash.put(name, Integer.toString(i)); } public void set(String name, double d) { hash.put(name, Double.toString(d)); } public void incrementInt(String name) { set(name, getInt(name) + 1); } public void set(String name, long l) { hash.put(name, Long.toString(l)); } public int getInt(String name) { String value = hash.get(name); return value != null ? Integer.parseInt(value) : 0; } public double getDouble(String name) { String value = hash.get(name); return value != null ? Double.parseDouble(value) : Double.NaN; } public long getLong(String name) { String value = hash.get(name); return value != null ? Long.parseLong(value) : 0l; } public String get(String name) { return hash.get(name); } public Set<String> keySet() { return hash.keySet(); } /** Sorts the key-value pairs by key names and formats them as equations. */ public String toString() { TreeMap<String, String> map = new TreeMap<String, String>(hash); return map.toString(); } }