See More

package examples; import org.mapdb.Bind; import org.mapdb.DBMaker; import org.mapdb.Fun; import org.mapdb.HTreeMap; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; /** * Shows how to split map into categories and count elements in each category * * Here we show histogram of an {@code Math.random()}. * We represent category as string for clarity, but any number or other type could be used */ public class Histogram { public static void main(String[] args) { HTreeMap map = DBMaker.newTempHashMap(); // histogram, category is a key, count is a value ConcurrentMap histogram = new ConcurrentHashMap(); //any map will do // bind histogram to primary map // we need function which returns category for each map entry Bind.histogram(map, histogram, new Fun.Function2(){ @Override public String run(Long key, Double value) { if(value<0.25) return "first quarter"; else if(value<0.5) return "second quarter"; else if(value<0.75) return "third quarter"; else return "fourth quarter"; } }); //insert some random stuff for(long key=0;key<1e4;key++){ map.put(key, Math.random()); } System.out.println(histogram); } }