5.6. Using a Bag
Problem
You need to find out how many times an
object
occurs within a Collection
, and you need a
Collection
that lets you manipulate the
cardinality of objects it contains.
Solution
Use a Bag
. A Bag
can store the
same object multiple times while keeping track of how many copies it
contains. For example, a Bag
object can contain 20
copies of object “A” and 50 copies
of object “B,” and it can be
queried to see how many copies of an object it contains. You can also
add or remove multiple copies of an object—add 10 copies of
“A” or remove 4 copies of
“B.” The following example creates
a Bag
and adds multiple copies of two
String
objects:
import org.apache.commons.collections.Bag; import org.apache.commons.collections.bag.HashBag; Bag bag = new HashBag( ); bag.add( "TEST1", 100 ); bag.add( "TEST2", 500 ); int test1Count = bag.getCount( "TEST1" ); int test2Count = bag.getCount( "TEST2" ); System.out.println( "Counts: TEST1: " + test1Count + ", TEST2: " + test2Count ); bag.remove( "TEST1", 1 ); bag.remove( "TEST2", 10 ); int test1Count = bag.getCount( "TEST1" ); int test2Count = bag.getCount( "TEST2" ); System.out.println( "Counts: TEST1: " + test1Count + ", TEST2: " + test2Count );
This example put 100 copies of the String
“TEST1” and 500 copies of the
String
“TEST2”
into a HashBag
. The contents of the
Bag
are then printed, and 1 instance of
“TEST1” and 10 instances of
“TEST2” are removed from the
Bag
:
Counts: TEST1: 100, TEST2: 500 Counts: TEST1: 99, TEST2: 490
Discussion ...
Get Jakarta Commons Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.