package org.erlide.erlang.util;
import java.io.PrintStream;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
public class Histogram {
private final Map<Long, Integer> map;
public Histogram() {
map = Maps.newTreeMap();
}
public void add(final Long key) {
Integer val = map.get(key);
if (val == null) {
val = 0;
}
map.put(key, val + 1);
}
public void print(final PrintStream out) {
out.println("-------------------------------");
final Set<Long> keys = map.keySet();
final List<Long> keyslist = Lists.newArrayList(keys);
Collections.sort(keyslist);
final long min = keyslist.get(0);
final long max = keyslist.get(keyslist.size() - 1);
for (long i = min; i <= max; i++) {
final Integer val = map.get(i);
if (val != null) {
out.println(String.format(" %3d: %4d", i, val));
}
}
out.println("-------------------------------");
}
}