package org.projectusus.core.basis;
import static java.lang.Integer.valueOf;
import java.util.SortedMap;
import java.util.TreeMap;
public class Histogram {
private SortedMap<Integer, Integer> counters = new TreeMap<Integer, Integer>();
public void increment( int number ) {
int newCount = 1 + countOf( number );
put( number, newCount );
}
public int countOf( int number ) {
Integer count = get( number );
return count == null ? 0 : count.intValue();
}
private void put( int number, int newCount ) {
counters.put( valueOf( number ), valueOf( newCount ) );
}
private Integer get( int number ) {
return counters.get( valueOf( number ) );
}
public double[] allValues() {
int index = 0;
double[] values = new double[counters.size()];
for( Integer number : counters.values() ) {
values[index++] = number.doubleValue();
}
return values;
}
public double[] allNumbers() {
int index = 0;
double[] values = new double[counters.size()];
for( Integer number : counters.keySet() ) {
values[index++] = number.doubleValue();
}
return values;
}
}