# Package org.apache.commons.collections4.bag

package org.apache.commons.collections4.bag
Implements the `Bag` and `SortedBag` interfaces. A bag stores an object and a count of the number of occurrences of the object.

The following implementations are provided in the package:

- HashBag - implementation that uses a HashMap to store the data
- TreeBag - implementation that uses a TreeMap to store the data

The following decorators are provided in the package:

- Synchronized - synchronizes method access for multithreaded environments
- Unmodifiable - ensures the bag cannot be altered
- Predicated - ensures that only elements that are valid according to a predicate can be added
- Transformed - transforms each element added to the bag
- Collection - ensures compliance with the java.util.Collection contract

- Related Packages
  Package
  Description
  org.apache.commons.collections4
  Interfaces and utilities shared across all packages.
- Classes
  Class
  Description
  AbstractBagDecorator<E>
  Decorates another `Bag` to provide additional behavior.
  AbstractMapBag<E>
  Abstract implementation of the `Bag` interface to simplify the creation of subclass implementations.
  AbstractMapBag.MutableInteger
  Mutable integer class for storing the data.
  AbstractSortedBagDecorator<E>
  Decorates another `SortedBag` to provide additional behavior.
  CollectionBag<E>
  Decorates another `Bag` to comply with the Collection contract.
  CollectionSortedBag<E>
  Decorates another `SortedBag` to comply with the Collection contract.
  HashBag<E>
  Implements `Bag`, using a `HashMap` to provide the data storage.
  PredicatedBag<E>
  Decorates another `Bag` to validate that additions match a specified predicate.
  PredicatedSortedBag<E>
  Decorates another `SortedBag` to validate that additions match a specified predicate.
  SynchronizedBag<E>
  Decorates another `Bag` to synchronize its behavior for a multithreaded environment.
  SynchronizedSortedBag<E>
  Decorates another `SortedBag` to synchronize its behavior for a multithreaded environment.
  TransformedBag<E>
  Decorates another `Bag` to transform objects that are added.
  TransformedSortedBag<E>
  Decorates another `SortedBag` to transform objects that are added.
  TreeBag<E>
  Implements `SortedBag`, using a `TreeMap` to provide the data storage.
  UnmodifiableBag<E>
  Decorates another `Bag` to ensure it can't be altered.
  UnmodifiableSortedBag<E>
  Decorates another `SortedBag` to ensure it can't be altered.