Used to accumulate values by category. It might be useful for example in a billing program to accumulate hours by various categories. It could be used to count how many times various words occurred in a document. All you need is: buckets.accumulate( "somecategory", someamount ); And Accumulate looks after creating the buckets to accumulate new categories for you. e.g. Accumulate buckets = new Accumulate( 20 ); buckets.accumulate( "ugli fruit", 3 ); buckets.accumulate( "peaches", 10 ); buckets.accumulate( "strawberries", 15 ); buckets.accumulate( "peaches", 14 ); String[] categories = buckets.categories(); // prints: // peaches:24 // strawberries:15 // ugli fruit:3 for (String category: categories ) { System.out.println( category: + ":" + buckets.total( category )); } You can test the app with: java.exe -jar accumulate.jar