Commons-Collections contains implementations, enhancements and utilities that complement the Java Collections Framework.

The Apache Jakarta Commons Collections Framework component adds a significant amount of enhancements to the standard JDK collections. These enhancements come in the form of new interfaces, new implementations and utility classes.

See also the `java.util` package for the standard Java collections.

#### Main features

Commons-Collections defines a number of key interfaces:

Interface | Description
--- | ---
{@link org.apache.commons.collections.Bag} | A new `Collection` subinterface that stores each object together with the number of occurances. Methods are provided to get the number of occurances, and to add and remove a certain number of that object.
{@link org.apache.commons.collections.Buffer} | A new `Collection` subinterface that allows objects to be removed in some well-defined order. Methods enable the next item to be peeked and removed.
{@link org.apache.commons.collections.BidiMap} | A new `Map` subinterface that allows lookup from key to value and from value to key with equal ease.
{@link org.apache.commons.collections.OrderedMap} | A new `Map` subinterface that is used when a map has an order, but is not sorted. Methods enable bidriectional iteration through the map.
{@link org.apache.commons.collections.MapIterator} | A new `Iterator` subinterface specially designed for maps. This iterator avoids the need for entrySet iteration of a map, and is simpler to use.
{@link org.apache.commons.collections.ResettableIterator} | A new `Iterator` subinterface that allows the iteration to be reset back to the start. Many iterators in this library have this functionality.
{@link org.apache.commons.collections.Closure} {@link org.apache.commons.collections.Predicate} {@link org.apache.commons.collections.Transformer} {@link org.apache.commons.collections.Factory} | A group of functor interfaces that provide plugin behaviour to various collections and utilities.

In addition to the interfaces, there are many implementations. Consult each subpackage for full details of these.