org.apache.commons.collections.collection
Class CompositeCollection<E>

java.lang.Object
  extended by org.apache.commons.collections.collection.CompositeCollection<E>
All Implemented Interfaces:
Iterable<E>, Collection<E>
Direct Known Subclasses:
CompositeSet

public class CompositeCollection<E>
extends Object
implements Collection<E>

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: 1.1.1.1 $ $Date: 2005/05/23 04:34:00 $
Author:
Brian McCallister, Stephen Colebourne, Matt Hall, John Watkinson, Phil Steitz

Nested Class Summary
static interface CompositeCollection.CollectionMutator<E>
          Pluggable strategy to handle changes to the composite.
 
Field Summary
protected  Collection<E>[] all
          Collections in the composite
protected  CompositeCollection.CollectionMutator<E> mutator
          CollectionMutator to handle changes to the collection
 
Constructor Summary
CompositeCollection()
          Create an empty CompositeCollection.
CompositeCollection(Collection<E> coll)
          Create a Composite Collection with only coll composited.
CompositeCollection(Collection<E>[] colls)
          Create a CompositeCollection with colls as the initial list of composited collections.
 
Method Summary
 boolean add(E obj)
          Adds an object to the collection, throwing UnsupportedOperationException unless a CollectionMutator strategy is specified.
 boolean addAll(Collection<? extends E> coll)
          Adds a collection of elements to this collection, throwing UnsupportedOperationException unless a CollectionMutator strategy is specified.
 void addComposited(Collection<? extends E> c)
          Add an additional collection to this composite.
 void addComposited(Collection<? extends E>[] comps)
          Add these Collections to the list of collections in this composite
 void addComposited(Collection<? extends E> c, Collection<? extends E> d)
          Add two additional collections to this composite.
 void clear()
          Removes all of the elements from this collection .
 boolean contains(Object obj)
          Checks whether this composite collection contains the object.
 boolean containsAll(Collection<?> coll)
          Checks whether this composite contains all the elements in the specified collection.
 Collection<Collection<E>> getCollections()
          Gets the collections being decorated.
 boolean isEmpty()
          Checks whether this composite collection is empty.
 Iterator<E> iterator()
          Gets an iterator over all the collections in this composite.
 boolean remove(Object obj)
          Removes an object from the collection, throwing UnsupportedOperationException unless a CollectionMutator strategy is specified.
 boolean removeAll(Collection<?> coll)
          Removes the elements in the specified collection from this composite collection.
 void removeComposited(Collection<? extends E> coll)
          Removes a collection from the those being decorated in this composite.
 boolean retainAll(Collection<?> coll)
          Retains all the elements in the specified collection in this composite collection, removing all others.
 void setMutator(CompositeCollection.CollectionMutator<E> mutator)
          Specify a CollectionMutator strategy instance to handle changes.
 int size()
          Gets the size of this composite collection.
 E[] toArray()
          Returns an array containing all of the elements in this composite.
<E> E[]
toArray(E[] array)
          Returns an object array, populating the supplied array if possible.
 Collection<E> toCollection()
          Returns a new collection containing all of the elements
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface java.util.Collection
equals, hashCode
 

Field Detail

mutator

protected CompositeCollection.CollectionMutator<E> mutator
CollectionMutator to handle changes to the collection


all

protected Collection<E>[] all
Collections in the composite

Constructor Detail

CompositeCollection

public CompositeCollection()
Create an empty CompositeCollection.


CompositeCollection

public CompositeCollection(Collection<E> coll)
Create a Composite Collection with only coll composited.

Parameters:
coll - a collection to decorate

CompositeCollection

public CompositeCollection(Collection<E>[] 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<E>
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<E>
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<E>
Parameters:
obj - the object to search for
Returns:
true if obj is contained in any of the contained collections

iterator

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

This implementation uses an IteratorChain.

Specified by:
iterator in interface Iterable<E>
Specified by:
iterator in interface Collection<E>
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 E[] toArray()
Returns an array containing all of the elements in this composite.

Specified by:
toArray in interface Collection<E>
Returns:
an object array of all the elements in the collection

toArray

public <E> E[] toArray(E[] array)
Returns an object array, populating the supplied array if possible. See Collection interface for full details.

Specified by:
toArray in interface Collection<E>
Parameters:
array - the array to use, populating if possible
Returns:
an array of all the elements in the collection

add

public boolean add(E obj)
Adds an object to the collection, throwing UnsupportedOperationException unless a CollectionMutator strategy is specified.

Specified by:
add in interface Collection<E>
Parameters:
obj - the object to add
Returns:
true if the collection was modified
Throws:
UnsupportedOperationException - if CollectionMutator hasn't been set
UnsupportedOperationException - if add is unsupported
ClassCastException - if the object cannot be added due to its type
NullPointerException - if the object cannot be added because its null
IllegalArgumentException - if the object cannot be added

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<E>
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<E>
Parameters:
coll - the collection to check for
Returns:
true if all elements contained

addAll

public boolean addAll(Collection<? extends E> coll)
Adds a collection of elements to this collection, throwing UnsupportedOperationException unless a CollectionMutator strategy is specified.

Specified by:
addAll in interface Collection<E>
Parameters:
coll - the collection to add
Returns:
true if the collection was modified
Throws:
UnsupportedOperationException - if CollectionMutator hasn't been set
UnsupportedOperationException - if add is unsupported
ClassCastException - if the object cannot be added due to its type
NullPointerException - if the object cannot be added because its null
IllegalArgumentException - if the object cannot be added

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<E>
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<E>
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<E>
Throws:
UnsupportedOperationException - if clear is unsupported

setMutator

public void setMutator(CompositeCollection.CollectionMutator<E> mutator)
Specify a CollectionMutator strategy instance to handle changes.

Parameters:
mutator - the mutator to use

addComposited

public void addComposited(Collection<? extends E>[] 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<? extends E> c)
Add an additional collection to this composite.

Parameters:
c - the collection to add

addComposited

public void addComposited(Collection<? extends E> c,
                          Collection<? extends E> 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<? extends E> coll)
Removes a collection from the those being decorated in this composite.

Parameters:
coll - collection to be removed

toCollection

public Collection<E> 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<Collection<E>> getCollections()
Gets the collections being decorated.

Returns:
Unmodifiable collection of all collections in this composite.


Copyright © 2005-2005 Apache Software Foundation, Matt Hall, John Watkinson. All Rights Reserved.