Class SetUtils
- Since:
- 2.1
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
An unmodifiable view of a set that may be backed by other sets. -
Field Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic <E> SetUtils.SetView
<E> difference
(Set<? extends E> setA, Set<? extends E> setB) Returns an unmodifiable view containing the difference of the givenSet
s, denoted bya \ b
(ora - b
).static <E> SetUtils.SetView
<E> disjunction
(Set<? extends E> setA, Set<? extends E> setB) Returns an unmodifiable view of the symmetric difference of the givenSet
s.static <T> Set
<T> emptyIfNull
(Set<T> set) Returns an immutable empty set if the argument isnull
, or the argument itself otherwise.static <E> Set
<E> emptySet()
Gets a typed empty unmodifiable Set.static <E> SortedSet
<E> Gets a typed empty unmodifiable sorted set.static <T> int
hashCodeForSet
(Collection<T> set) Generates a hash code using the algorithm specified inSet.hashCode()
.static <E> HashSet
<E> hashSet
(E... items) Creates a set from the given items.static <E> SetUtils.SetView
<E> intersection
(Set<? extends E> setA, Set<? extends E> setB) Returns an unmodifiable view of the intersection of the givenSet
s.static boolean
isEqualSet
(Collection<?> set1, Collection<?> set2) Tests two sets for equality as per theequals()
contract inSet.equals(Object)
.static <E> Set
<E> Returns a new hash set that matches elements based on==
notequals()
.static <E> Set
<E> orderedSet
(Set<E> set) Returns a set that maintains the order of elements that are added backed by the given set.static <E> SortedSet
<E> predicatedNavigableSet
(NavigableSet<E> set, Predicate<? super E> predicate) Returns a predicated (validating) navigable set backed by the given navigable set.static <E> Set
<E> predicatedSet
(Set<E> set, Predicate<? super E> predicate) Returns a predicated (validating) set backed by the given set.static <E> SortedSet
<E> predicatedSortedSet
(SortedSet<E> set, Predicate<? super E> predicate) Returns a predicated (validating) sorted set backed by the given sorted set.static <E> Set
<E> synchronizedSet
(Set<E> set) Returns a synchronized set backed by the given set.static <E> SortedSet
<E> synchronizedSortedSet
(SortedSet<E> set) Returns a synchronized sorted set backed by the given sorted set.static <E> SortedSet
<E> transformedNavigableSet
(NavigableSet<E> set, Transformer<? super E, ? extends E> transformer) Returns a transformed navigable set backed by the given navigable set.static <E> Set
<E> transformedSet
(Set<E> set, Transformer<? super E, ? extends E> transformer) Returns a transformed set backed by the given set.static <E> SortedSet
<E> transformedSortedSet
(SortedSet<E> set, Transformer<? super E, ? extends E> transformer) Returns a transformed sorted set backed by the given set.static <E> SetUtils.SetView
<E> Returns an unmodifiable view of the union of the givenSet
s.static <E> SortedSet
<E> unmodifiableNavigableSet
(NavigableSet<E> set) Returns an unmodifiable navigable set backed by the given navigable set.static <E> Set
<E> unmodifiableSet
(E... items) Creates an unmodifiable set from the given items.static <E> Set
<E> unmodifiableSet
(Set<? extends E> set) Returns an unmodifiable set backed by the given set.static <E> SortedSet
<E> unmodifiableSortedSet
(SortedSet<E> set) Returns an unmodifiable sorted set backed by the given sorted set.
-
Field Details
-
EMPTY_SORTED_SET
An empty unmodifiable sorted set. This is not provided in the JDK.
-
-
Method Details
-
difference
Returns an unmodifiable view containing the difference of the givenSet
s, denoted bya \ b
(ora - b
).The returned view contains all elements of
a
that are not a member ofb
.- Type Parameters:
E
- the generic type that is able to represent the types contained in both input sets.- Parameters:
setA
- the set to subtract from, must not be nullsetB
- the set to subtract, must not be null- Returns:
- a view of the relative complement of the two sets
- Since:
- 4.1
-
disjunction
Returns an unmodifiable view of the symmetric difference of the givenSet
s.The returned view contains all elements of
a
andb
that are not a member of the other set.This is equivalent to
union(difference(a, b), difference(b, a))
.- Type Parameters:
E
- the generic type that is able to represent the types contained in both input sets.- Parameters:
setA
- the first set, must not be nullsetB
- the second set, must not be null- Returns:
- a view of the symmetric difference of the two sets
- Since:
- 4.1
-
emptyIfNull
Returns an immutable empty set if the argument isnull
, or the argument itself otherwise.- Type Parameters:
T
- the element type- Parameters:
set
- the set, possiblynull
- Returns:
- an empty set if the argument is
null
-
emptySet
Gets a typed empty unmodifiable Set.- Type Parameters:
E
- the element type- Returns:
- an empty Set
-
emptySortedSet
Gets a typed empty unmodifiable sorted set.- Type Parameters:
E
- the element type- Returns:
- an empty sorted Set
-
hashCodeForSet
Generates a hash code using the algorithm specified inSet.hashCode()
.This method is useful for implementing
Set
when you cannot extend AbstractSet. The method takes Collection instances to enable other collection types to use the Set implementation algorithm.- Type Parameters:
T
- the element type- Parameters:
set
- the set to calculate the hash code for, may be null- Returns:
- the hash code
- See Also:
-
hashSet
Creates a set from the given items. If the passed var-args argument isnull
, then the method returnsnull
.- Type Parameters:
E
- the element type- Parameters:
items
- the elements that make up the new set- Returns:
- a set
- Since:
- 4.3
-
intersection
Returns an unmodifiable view of the intersection of the givenSet
s.The returned view contains all elements that are members of both input sets (
a
andb
).- Type Parameters:
E
- the generic type that is able to represent the types contained in both input sets.- Parameters:
setA
- the first set, must not be nullsetB
- the second set, must not be null- Returns:
- a view of the intersection of the two sets
- Since:
- 4.1
-
isEqualSet
Tests two sets for equality as per theequals()
contract inSet.equals(Object)
.This method is useful for implementing
Set
when you cannot extend AbstractSet. The method takes Collection instances to enable other collection types to use the Set implementation algorithm.The relevant text (slightly paraphrased as this is a static method) is:
Two sets are considered equal if they have the same size, and every member of the first set is contained in the second. This ensures that the
equals
method works properly across different implementations of theSet
interface.This implementation first checks if the two sets are the same object: if so it returns
true
. Then, it checks if the two sets are identical in size; if not, it returns false. If so, it returnsa.containsAll((Collection) b)
.- Parameters:
set1
- the first set, may be nullset2
- the second set, may be null- Returns:
- whether the sets are equal by value comparison
- See Also:
-
newIdentityHashSet
Returns a new hash set that matches elements based on==
notequals()
.This set will violate the detail of various Set contracts. As a general rule, don't compare this set to other sets. In particular, you can't use decorators like
ListOrderedSet
on it, which silently assume that these contracts are fulfilled.Note that the returned set is not synchronized and is not thread-safe. If you wish to use this set from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using
Collections.synchronizedSet(Set)
. This class may throw exceptions when accessed by concurrent threads without synchronization.- Type Parameters:
E
- the element type- Returns:
- a new identity hash set
- Since:
- 4.1
-
orderedSet
Returns a set that maintains the order of elements that are added backed by the given set.If an element is added twice, the order is determined by the first add. The order is observed through the iterator or toArray.
- Type Parameters:
E
- the element type- Parameters:
set
- the set to order, must not be null- Returns:
- an ordered set backed by the given set
- Throws:
NullPointerException
- if the set is null
-
predicatedSet
Returns a predicated (validating) set backed by the given set.Only objects that pass the test in the given predicate can be added to the set. Trying to add an invalid object results in an IllegalArgumentException. It is important not to use the original set after invoking this method, as it is a backdoor for adding invalid objects.
- Type Parameters:
E
- the element type- Parameters:
set
- the set to predicate, must not be nullpredicate
- the predicate for the set, must not be null- Returns:
- a predicated set backed by the given set
- Throws:
NullPointerException
- if the set or predicate is null
-
predicatedSortedSet
public static <E> SortedSet<E> predicatedSortedSet(SortedSet<E> set, Predicate<? super E> predicate) Returns a predicated (validating) sorted set backed by the given sorted set.Only objects that pass the test in the given predicate can be added to the set. Trying to add an invalid object results in an IllegalArgumentException. It is important not to use the original set after invoking this method, as it is a backdoor for adding invalid objects.
- Type Parameters:
E
- the element type- Parameters:
set
- the sorted set to predicate, must not be nullpredicate
- the predicate for the sorted set, must not be null- Returns:
- a predicated sorted set backed by the given sorted set
- Throws:
NullPointerException
- if the set or predicate is null
-
synchronizedSet
Returns a synchronized set backed by the given set.You must manually synchronize on the returned set's iterator to avoid non-deterministic behavior:
Sets s = SetUtils.synchronizedSet(mySet); synchronized (s) { Iterator i = s.iterator(); while (i.hasNext()) { process (i.next()); } }
This method is just a wrapper forCollections.synchronizedSet(Set)
.- Type Parameters:
E
- the element type- Parameters:
set
- the set to synchronize, must not be null- Returns:
- a synchronized set backed by the given set
- Throws:
NullPointerException
- if the set is null
-
synchronizedSortedSet
Returns a synchronized sorted set backed by the given sorted set.You must manually synchronize on the returned set's iterator to avoid non-deterministic behavior:
Set s = SetUtils.synchronizedSortedSet(mySet); synchronized (s) { Iterator i = s.iterator(); while (i.hasNext()) { process (i.next()); } }
This method is just a wrapper forCollections.synchronizedSortedSet(SortedSet)
.- Type Parameters:
E
- the element type- Parameters:
set
- the sorted set to synchronize, must not be null- Returns:
- a synchronized set backed by the given set
- Throws:
NullPointerException
- if the set is null
-
transformedSet
Returns a transformed set backed by the given set.Each object is passed through the transformer as it is added to the Set. It is important not to use the original set after invoking this method, as it is a backdoor for adding untransformed objects.
Existing entries in the specified set will not be transformed. If you want that behavior, see
TransformedSet.transformedSet(java.util.Set<E>, org.apache.commons.collections4.Transformer<? super E, ? extends E>)
.- Type Parameters:
E
- the element type- Parameters:
set
- the set to transform, must not be nulltransformer
- the transformer for the set, must not be null- Returns:
- a transformed set backed by the given set
- Throws:
NullPointerException
- if the set or transformer is null
-
transformedSortedSet
public static <E> SortedSet<E> transformedSortedSet(SortedSet<E> set, Transformer<? super E, ? extends E> transformer) Returns a transformed sorted set backed by the given set.Each object is passed through the transformer as it is added to the Set. It is important not to use the original set after invoking this method, as it is a backdoor for adding untransformed objects.
Existing entries in the specified set will not be transformed. If you want that behavior, see
TransformedSortedSet.transformedSortedSet(java.util.SortedSet<E>, org.apache.commons.collections4.Transformer<? super E, ? extends E>)
.- Type Parameters:
E
- the element type- Parameters:
set
- the set to transform, must not be nulltransformer
- the transformer for the set, must not be null- Returns:
- a transformed set backed by the given set
- Throws:
NullPointerException
- if the set or transformer is null
-
union
Returns an unmodifiable view of the union of the givenSet
s.The returned view contains all elements of
a
andb
.- Type Parameters:
E
- the generic type that is able to represent the types contained in both input sets.- Parameters:
setA
- the first set, must not be nullsetB
- the second set, must not be null- Returns:
- a view of the union of the two set
- Throws:
NullPointerException
- if either input set is null- Since:
- 4.1
-
unmodifiableSet
Creates an unmodifiable set from the given items. If the passed var-args argument isnull
, then the method returnsnull
.- Type Parameters:
E
- the element type- Parameters:
items
- the elements that make up the new set- Returns:
- a set
- Since:
- 4.3
-
unmodifiableSet
Returns an unmodifiable set backed by the given set.This method uses the implementation in the decorators subpackage.
- Type Parameters:
E
- the element type- Parameters:
set
- the set to make unmodifiable, must not be null- Returns:
- an unmodifiable set backed by the given set
- Throws:
NullPointerException
- if the set is null
-
unmodifiableSortedSet
Returns an unmodifiable sorted set backed by the given sorted set.This method uses the implementation in the decorators subpackage.
- Type Parameters:
E
- the element type- Parameters:
set
- the sorted set to make unmodifiable, must not be null- Returns:
- an unmodifiable set backed by the given set
- Throws:
NullPointerException
- if the set is null
-