Class CompositeCollection

  • All Implemented Interfaces:
    Iterable, Collection
    Direct Known Subclasses:
    CompositeSet

    public class CompositeCollection
    extends Object
    implements Collection
    Decorates a collection of other collections to provide a single unified view.

    Changes made to this collection will actually be made on the decorated collection. Add and remove operations require the use of a pluggable strategy. If no strategy is provided then add and remove are unsupported.

    Since:
    Commons Collections 3.0
    Version:
    $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
    Author:
    Brian McCallister, Stephen Colebourne, Phil Steitz
    • Constructor Detail

      • CompositeCollection

        public CompositeCollection()
        Create an empty CompositeCollection.
      • CompositeCollection

        public CompositeCollection​(Collection coll)
        Create a Composite Collection with only coll composited.
        Parameters:
        coll - a collection to decorate
      • CompositeCollection

        public CompositeCollection​(Collection[] colls)
        Create a CompositeCollection with colls as the initial list of composited collections.
        Parameters:
        colls - an array of collections to decorate
    • Method Detail

      • size

        public int size()
        Gets the size of this composite collection.

        This implementation calls size() on each collection.

        Specified by:
        size in interface Collection
        Returns:
        total number of elements in all contained containers
      • isEmpty

        public boolean isEmpty()
        Checks whether this composite collection is empty.

        This implementation calls isEmpty() on each collection.

        Specified by:
        isEmpty in interface Collection
        Returns:
        true if all of the contained collections are empty
      • contains

        public boolean contains​(Object obj)
        Checks whether this composite collection contains the object.

        This implementation calls contains() on each collection.

        Specified by:
        contains in interface Collection
        Parameters:
        obj - the object to search for
        Returns:
        true if obj is contained in any of the contained collections
      • iterator

        public Iterator iterator()
        Gets an iterator over all the collections in this composite.

        This implementation uses an IteratorChain.

        Specified by:
        iterator in interface Collection
        Specified by:
        iterator in interface Iterable
        Returns:
        an IteratorChain instance which supports remove(). Iteration occurs over contained collections in the order they were added, but this behavior should not be relied upon.
        See Also:
        IteratorChain
      • toArray

        public Object[] toArray()
        Returns an array containing all of the elements in this composite.
        Specified by:
        toArray in interface Collection
        Returns:
        an object array of all the elements in the collection
      • toArray

        public Object[] toArray​(Object[] array)
        Returns an object array, populating the supplied array if possible. See Collection interface for full details.
        Specified by:
        toArray in interface Collection
        Parameters:
        array - the array to use, populating if possible
        Returns:
        an array of all the elements in the collection
      • remove

        public boolean remove​(Object obj)
        Removes an object from the collection, throwing UnsupportedOperationException unless a CollectionMutator strategy is specified.
        Specified by:
        remove in interface Collection
        Parameters:
        obj - the object being removed
        Returns:
        true if the collection is changed
        Throws:
        UnsupportedOperationException - if removed is unsupported
        ClassCastException - if the object cannot be removed due to its type
        NullPointerException - if the object cannot be removed because its null
        IllegalArgumentException - if the object cannot be removed
      • containsAll

        public boolean containsAll​(Collection coll)
        Checks whether this composite contains all the elements in the specified collection.

        This implementation calls contains() for each element in the specified collection.

        Specified by:
        containsAll in interface Collection
        Parameters:
        coll - the collection to check for
        Returns:
        true if all elements contained
      • removeAll

        public boolean removeAll​(Collection coll)
        Removes the elements in the specified collection from this composite collection.

        This implementation calls removeAll on each collection.

        Specified by:
        removeAll in interface Collection
        Parameters:
        coll - the collection to remove
        Returns:
        true if the collection was modified
        Throws:
        UnsupportedOperationException - if removeAll is unsupported
      • retainAll

        public boolean retainAll​(Collection coll)
        Retains all the elements in the specified collection in this composite collection, removing all others.

        This implementation calls retainAll() on each collection.

        Specified by:
        retainAll in interface Collection
        Parameters:
        coll - the collection to remove
        Returns:
        true if the collection was modified
        Throws:
        UnsupportedOperationException - if retainAll is unsupported
      • clear

        public void clear()
        Removes all of the elements from this collection .

        This implementation calls clear() on each collection.

        Specified by:
        clear in interface Collection
        Throws:
        UnsupportedOperationException - if clear is unsupported
      • setMutator

        public void setMutator​(CompositeCollection.CollectionMutator mutator)
        Specify a CollectionMutator strategy instance to handle changes.
        Parameters:
        mutator - the mutator to use
      • addComposited

        public void addComposited​(Collection[] comps)
        Add these Collections to the list of collections in this composite
        Parameters:
        comps - Collections to be appended to the composite
      • addComposited

        public void addComposited​(Collection c)
        Add an additional collection to this composite.
        Parameters:
        c - the collection to add
      • addComposited

        public void addComposited​(Collection c,
                                  Collection d)
        Add two additional collections to this composite.
        Parameters:
        c - the first collection to add
        d - the second collection to add
      • removeComposited

        public void removeComposited​(Collection coll)
        Removes a collection from the those being decorated in this composite.
        Parameters:
        coll - collection to be removed
      • toCollection

        public Collection toCollection()
        Returns a new collection containing all of the elements
        Returns:
        A new ArrayList containing all of the elements in this composite. The new collection is not backed by this composite.
      • getCollections

        public Collection getCollections()
        Gets the collections being decorated.
        Returns:
        Unmodifiable collection of all collections in this composite.