Class CompositeSet<E>
- java.lang.Object
-
- org.apache.commons.collections4.set.CompositeSet<E>
-
- Type Parameters:
E- the type of the elements in this set
- All Implemented Interfaces:
Serializable,Iterable<E>,Collection<E>,Set<E>
public class CompositeSet<E> extends Object implements Set<E>, Serializable
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.
From version 4.0, this class does not extend
CompositeCollectionanymore due to its input restrictions (only accepts Sets). See COLLECTIONS-424 for more details.- Since:
- 3.0
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceCompositeSet.SetMutator<E>Define callbacks for mutation operations.
-
Constructor Summary
Constructors Constructor Description CompositeSet()Create an empty CompositeSet.CompositeSet(Set<E> set)Create a CompositeSet with justsetcomposited.CompositeSet(Set<E>... sets)Create a composite set with sets as the initial set of composited Sets.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanadd(E obj)Adds an object to the collection, throwing UnsupportedOperationException unless a SetMutator strategy is specified.booleanaddAll(Collection<? extends E> coll)Adds a collection of elements to this composite, throwing UnsupportedOperationException unless a SetMutator strategy is specified.voidaddComposited(Set<E> set)Add a Set to this composite.voidaddComposited(Set<E>... sets)Add these Sets to the list of sets in this compositevoidaddComposited(Set<E> set1, Set<E> set2)Add these Sets to the list of sets in this composite.voidclear()Removes all of the elements from this composite set.booleancontains(Object obj)Checks whether this composite set contains the object.booleancontainsAll(Collection<?> coll)Checks whether this composite contains all the elements in the specified collection.booleanequals(Object obj)List<Set<E>>getSets()Gets the sets being decorated.inthashCode()booleanisEmpty()Checks whether this composite set is empty.Iterator<E>iterator()Gets an iterator over all the sets in this composite.booleanremove(Object obj)If aCollectionMutatoris defined for this CompositeSet then this method will be called anyway.booleanremoveAll(Collection<?> coll)Removes the elements in the specified collection from this composite set.voidremoveComposited(Set<E> set)Removes a set from those being decorated in this composite.booleanremoveIf(Predicate<? super E> filter)booleanretainAll(Collection<?> coll)Retains all the elements in the specified collection in this composite set, removing all others.voidsetMutator(CompositeSet.SetMutator<E> mutator)Specify a SetMutator strategy instance to handle changes.intsize()Gets the size of this composite set.Object[]toArray()Returns an array containing all of the elements in this composite.<T> T[]toArray(T[] array)Returns an object array, populating the supplied array if possible.Set<E>toSet()Returns a new Set containing all of the elements.-
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.util.Collection
parallelStream, stream, toArray
-
Methods inherited from interface java.util.Set
spliterator
-
-
-
-
Method Detail
-
size
public int size()
Gets the size of this composite set.This implementation calls
size()on each set.
-
isEmpty
public boolean isEmpty()
Checks whether this composite set is empty.This implementation calls
isEmpty()on each set.
-
contains
public boolean contains(Object obj)
Checks whether this composite set contains the object.This implementation calls
contains()on each set.
-
iterator
public Iterator<E> iterator()
Gets an iterator over all the sets in this composite.This implementation uses an
IteratorChain.- Specified by:
iteratorin interfaceCollection<E>- Specified by:
iteratorin interfaceIterable<E>- Specified by:
iteratorin interfaceSet<E>- Returns:
- an
IteratorChaininstance which supportsremove(). 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.
-
toArray
public <T> T[] toArray(T[] array)
Returns an object array, populating the supplied array if possible. SeeCollectioninterface for full details.
-
add
public boolean add(E obj)
Adds an object to the collection, throwing UnsupportedOperationException unless a SetMutator strategy is specified.- Specified by:
addin interfaceCollection<E>- Specified by:
addin interfaceSet<E>- Parameters:
obj- the object to add- Returns:
trueif the collection was modified- Throws:
UnsupportedOperationException- if SetMutator hasn't been set or add is unsupportedClassCastException- if the object cannot be added due to its typeNullPointerException- if the object cannot be added because its nullIllegalArgumentException- if the object cannot be added
-
remove
public boolean remove(Object obj)
If aCollectionMutatoris defined for this CompositeSet then this method will be called anyway.
-
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:
containsAllin interfaceCollection<E>- Specified by:
containsAllin interfaceSet<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 composite, throwing UnsupportedOperationException unless a SetMutator strategy is specified.- Specified by:
addAllin interfaceCollection<E>- Specified by:
addAllin interfaceSet<E>- Parameters:
coll- the collection to add- Returns:
- true if the composite was modified
- Throws:
UnsupportedOperationException- if SetMutator hasn't been set or add is unsupportedClassCastException- if the object cannot be added due to its typeNullPointerException- if the object cannot be added because its nullIllegalArgumentException- if the object cannot be added
-
removeIf
public boolean removeIf(Predicate<? super E> filter)
- Specified by:
removeIfin interfaceCollection<E>- Since:
- 4.4
-
removeAll
public boolean removeAll(Collection<?> coll)
Removes the elements in the specified collection from this composite set.This implementation calls
removeAllon each collection.- Specified by:
removeAllin interfaceCollection<E>- Specified by:
removeAllin interfaceSet<E>- Parameters:
coll- the collection to remove- Returns:
- true if the composite 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 set, removing all others.This implementation calls
retainAll()on each collection.- Specified by:
retainAllin interfaceCollection<E>- Specified by:
retainAllin interfaceSet<E>- Parameters:
coll- the collection to remove- Returns:
- true if the composite was modified
- Throws:
UnsupportedOperationException- if retainAll is unsupported
-
clear
public void clear()
Removes all of the elements from this composite set.This implementation calls
clear()on each set.- Specified by:
clearin interfaceCollection<E>- Specified by:
clearin interfaceSet<E>- Throws:
UnsupportedOperationException- if clear is unsupported
-
setMutator
public void setMutator(CompositeSet.SetMutator<E> mutator)
Specify a SetMutator strategy instance to handle changes.- Parameters:
mutator- the mutator to use
-
addComposited
public void addComposited(Set<E> set)
Add a Set to this composite.- Parameters:
set- the set to add- Throws:
IllegalArgumentException- if a SetMutator is set, but fails to resolve a collisionUnsupportedOperationException- if there is no SetMutator setNullPointerException- ifsetis null- See Also:
CompositeSet.SetMutator
-
addComposited
public void addComposited(Set<E> set1, Set<E> set2)
Add these Sets to the list of sets in this composite.- Parameters:
set1- the first Set to be appended to the compositeset2- the second Set to be appended to the composite
-
addComposited
public void addComposited(Set<E>... sets)
Add these Sets to the list of sets in this composite- Parameters:
sets- the Sets to be appended to the composite
-
removeComposited
public void removeComposited(Set<E> set)
Removes a set from those being decorated in this composite.- Parameters:
set- set to be removed
-
toSet
public Set<E> toSet()
Returns a new Set containing all of the elements.- Returns:
- A new HashSet containing all of the elements in this composite. The new collection is not backed by this composite.
-
getSets
public List<Set<E>> getSets()
Gets the sets being decorated.- Returns:
- Unmodifiable list of all sets in this composite.
-
equals
public boolean equals(Object obj)
- Specified by:
equalsin interfaceCollection<E>- Specified by:
equalsin interfaceSet<E>- Overrides:
equalsin classObject- See Also:
Set.equals(java.lang.Object)
-
hashCode
public int hashCode()
- Specified by:
hashCodein interfaceCollection<E>- Specified by:
hashCodein interfaceSet<E>- Overrides:
hashCodein classObject- See Also:
Set.hashCode()
-
-