## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

No credit card required

# 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( );

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```

## With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

No credit card required