org.apache.commons.collections.set

## Class CompositeSet

- java.lang.Object
- - org.apache.commons.collections.collection.CompositeCollection
  - - org.apache.commons.collections.set.CompositeSet

- All Implemented Interfaces:
    Iterable, Collection, Set

      public class CompositeSet
      extends CompositeCollection
      implements Set

  Decorates a set of other sets to provide a single unified view.

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

  Since:
    Commons Collections 3.0
  Version:
    $Revision: 646777 $ $Date: 2008-04-10 14:33:15 +0200 (Thu, 10 Apr 2008) $
  Author:
    Brian McCallister

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `CompositeSet.SetMutator` Define callbacks for mutation operations.

    - ### Nested classes/interfaces inherited from class org.apache.commons.collections.collection.CompositeCollection

      `CompositeCollection.CollectionMutator`

  - ### Field Summary

    - ### Fields inherited from class org.apache.commons.collections.collection.CompositeCollection

      `all, mutator`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CompositeSet()` Create an empty CompositeSet
    `CompositeSet(Set set)` Create a CompositeSet with just `set` composited
    `CompositeSet(Set[] sets)` Create a composite set with sets as the initial set of composited Sets

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `addComposited(Collection c)` Add a Set to this composite
    `void` | `addComposited(Collection[] comps)` Add an array of sets to this composite
    `void` | `addComposited(Collection c, Collection d)` Add two sets to this composite
    `boolean` | `equals(Object obj)`
    `int` | `hashCode()`
    `boolean` | `remove(Object obj)` If a `CollectionMutator` is defined for this CompositeSet then this method will be called anyway.
    `void` | `setMutator(CompositeCollection.CollectionMutator mutator)` This can receive either a `CompositeCollection.CollectionMutator` or a `CompositeSet.SetMutator`.

    - ### Methods inherited from class org.apache.commons.collections.collection.CompositeCollection

      `add, addAll, clear, contains, containsAll, getCollections, isEmpty, iterator, removeAll, removeComposited, retainAll, size, toArray, toArray, toCollection`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface java.util.Set

      `add, addAll, clear, contains, containsAll, isEmpty, iterator, removeAll, retainAll, size, toArray, toArray`

- - ### Constructor Detail

    - #### CompositeSet

          public CompositeSet()

      Create an empty CompositeSet

    - #### CompositeSet

          public CompositeSet(Set set)

      Create a CompositeSet with just `set` composited
      Parameters:
        `set` - The initial set in the composite

    - #### CompositeSet

          public CompositeSet(Set[] sets)

      Create a composite set with sets as the initial set of composited Sets

  - ### Method Detail

    - #### addComposited

          public void addComposited(Collection c)

      Add a Set to this composite
      Overrides:
        `addComposited` in class `CompositeCollection`
      Parameters:
        `c` - Must implement Set
      Throws:
        `IllegalArgumentException` - if c does not implement java.util.Set or if a SetMutator is set, but fails to resolve a collision
        `UnsupportedOperationException` - if there is no SetMutator set, or a CollectionMutator is set instead of a SetMutator
      See Also:
        `CompositeCollection.CollectionMutator`, `CompositeSet.SetMutator`

    - #### addComposited

          public void addComposited(Collection c,
                           Collection d)

      Add two sets to this composite
      Overrides:
        `addComposited` in class `CompositeCollection`
      Parameters:
        `c` - the first collection to add
        `d` - the second collection to add
      Throws:
        `IllegalArgumentException` - if c or d does not implement java.util.Set

    - #### addComposited

          public void addComposited(Collection[] comps)

      Add an array of sets to this composite
      Overrides:
        `addComposited` in class `CompositeCollection`
      Parameters:
        `comps` -
      Throws:
        `IllegalArgumentException` - if any of the collections in comps do not implement Set

    - #### setMutator

          public void setMutator(CompositeCollection.CollectionMutator mutator)

      This can receive either a `CompositeCollection.CollectionMutator` or a `CompositeSet.SetMutator`. If a `CompositeCollection.CollectionMutator` is used than conflicts when adding composited sets will throw IllegalArgumentException

      Overrides:
        `setMutator` in class `CompositeCollection`
      Parameters:
        `mutator` - the mutator to use

    - #### remove

          public boolean remove(Object obj)

      If a `CollectionMutator` is defined for this CompositeSet then this method will be called anyway.
      Specified by:
        `remove` in interface `Collection`
      Specified by:
        `remove` in interface `Set`
      Overrides:
        `remove` in class `CompositeCollection`
      Parameters:
        `obj` - Object to be removed
      Returns:
        true if the object is removed, false otherwise

    - #### equals

          public boolean equals(Object obj)

      Specified by:
        `equals` in interface `Collection`
      Specified by:
        `equals` in interface `Set`
      Overrides:
        `equals` in class `Object`
      See Also:
        `Set.equals(java.lang.Object)`

    - #### hashCode

          public int hashCode()

      Specified by:
        `hashCode` in interface `Collection`
      Specified by:
        `hashCode` in interface `Set`
      Overrides:
        `hashCode` in class `Object`
      See Also:
        `Set.hashCode()`

Copyright © 2001–2015 The Apache Software Foundation. All rights reserved.