public abstract class CollectionUtils extends Object
Constructor and Description |
---|
CollectionUtils() |
Modifier and Type | Method and Description |
---|---|
static List<?> |
arrayToList(Object source)
Convert the supplied array into a List.
|
static boolean |
contains(Enumeration<?> enumeration,
Object element)
Check whether the given Enumeration contains the given element.
|
static boolean |
contains(Iterator<?> iterator,
Object element)
Check whether the given Iterator contains the given element.
|
static boolean |
containsAny(Collection<?> source,
Collection<?> candidates)
Return
true if any element in 'candidates ' is
contained in 'source '; otherwise returns false . |
static boolean |
containsInstance(Collection<?> collection,
Object element)
Check whether the given Collection contains the given element instance.
|
static Class<?> |
findCommonElementType(Collection<?> collection)
Find the common element type of the given Collection, if any.
|
static <E> E |
findFirstMatch(Collection<?> source,
Collection<E> candidates)
Return the first element in '
candidates ' that is contained in
'source '. |
static Object |
findValueOfType(Collection<?> collection,
Class<?>[] types)
Find a single value of one of the given types in the given Collection:
searching the Collection for a value of the first type, then
searching for a value of the second type, etc.
|
static <T> T |
findValueOfType(Collection<?> collection,
Class<T> type)
Find a single value of the given type in the given Collection.
|
static <T> T |
firstElement(List<T> list)
Retrieve the first element of the given List, accessing the zero index.
|
static <T> T |
firstElement(Set<T> set)
Retrieve the first element of the given Set, using
SortedSet.first()
or otherwise using the iterator. |
static boolean |
hasUniqueObject(Collection<?> collection)
Determine whether the given Collection only contains a single unique object.
|
static boolean |
isEmpty(Collection<?> collection)
Return
true if the supplied Collection is null or empty. |
static boolean |
isEmpty(Map<?,?> map)
Return
true if the supplied Map is null or empty. |
static <T> T |
lastElement(List<T> list)
Retrieve the last element of the given List, accessing the highest index.
|
static <T> T |
lastElement(Set<T> set)
Retrieve the last element of the given Set, using
SortedSet.last()
or otherwise iterating over all elements (assuming a linked set). |
static <E> void |
mergeArrayIntoCollection(Object array,
Collection<E> collection)
Merge the given array into the given Collection.
|
static <K,V> void |
mergePropertiesIntoMap(Properties props,
Map<K,V> map)
Merge the given Properties instance into the given Map,
copying all properties (key-value pairs) over.
|
static <K,V> HashMap<K,V> |
newHashMap(int expectedSize)
Instantiate a new
HashMap with an initial capacity
that can accommodate the specified number of elements without
any immediate resize/rehash operations to be expected. |
static <K,V> LinkedHashMap<K,V> |
newLinkedHashMap(int expectedSize)
Instantiate a new
LinkedHashMap with an initial capacity
that can accommodate the specified number of elements without
any immediate resize/rehash operations to be expected. |
static <A,E extends A> |
toArray(Enumeration<E> enumeration,
A[] array)
Marshal the elements from the given enumeration into an array of the given type.
|
static <E> Iterator<E> |
toIterator(Enumeration<E> enumeration)
Adapt an
Enumeration to an Iterator . |
static <K,V> MultiValueMap<K,V> |
toMultiValueMap(Map<K,List<V>> targetMap)
Adapt a
Map<K, List<V>> to an MultiValueMap<K, V> . |
static <K,V> MultiValueMap<K,V> |
unmodifiableMultiValueMap(MultiValueMap<? extends K,? extends V> targetMap)
Return an unmodifiable view of the specified multi-value map.
|
public static boolean isEmpty(@Nullable Collection<?> collection)
true
if the supplied Collection is null
or empty.
Otherwise, return false
.collection
- the Collection to checkpublic static boolean isEmpty(@Nullable Map<?,?> map)
true
if the supplied Map is null
or empty.
Otherwise, return false
.map
- the Map to checkpublic static <K,V> HashMap<K,V> newHashMap(int expectedSize)
HashMap
with an initial capacity
that can accommodate the specified number of elements without
any immediate resize/rehash operations to be expected.
This differs from the regular HashMap
constructor
which takes an initial capacity relative to a load factor
but is effectively aligned with the JDK's
ConcurrentHashMap.ConcurrentHashMap(int)
.
expectedSize
- the expected number of elements (with a corresponding
capacity to be derived so that no resize/rehash operations are needed)newLinkedHashMap(int)
public static <K,V> LinkedHashMap<K,V> newLinkedHashMap(int expectedSize)
LinkedHashMap
with an initial capacity
that can accommodate the specified number of elements without
any immediate resize/rehash operations to be expected.
This differs from the regular LinkedHashMap
constructor
which takes an initial capacity relative to a load factor but is
aligned with Spring's own LinkedCaseInsensitiveMap
and
LinkedMultiValueMap
constructor semantics as of 5.3.
expectedSize
- the expected number of elements (with a corresponding
capacity to be derived so that no resize/rehash operations are needed)newHashMap(int)
public static List<?> arrayToList(@Nullable Object source)
NOTE: Generally prefer the standard Arrays.asList(T...)
method.
This arrayToList
method is just meant to deal with an incoming Object
value that might be an Object[]
or a primitive array at runtime.
A null
source value will be converted to an empty List.
source
- the (potentially primitive) arrayObjectUtils.toObjectArray(Object)
,
Arrays.asList(Object[])
public static <E> void mergeArrayIntoCollection(@Nullable Object array, Collection<E> collection)
array
- the array to merge (may be null
)collection
- the target Collection to merge the array intopublic static <K,V> void mergePropertiesIntoMap(@Nullable Properties props, Map<K,V> map)
Uses Properties.propertyNames()
to even catch
default properties linked into the original Properties instance.
props
- the Properties instance to merge (may be null
)map
- the target Map to merge the properties intopublic static boolean contains(@Nullable Iterator<?> iterator, Object element)
iterator
- the Iterator to checkelement
- the element to look fortrue
if found, false
otherwisepublic static boolean contains(@Nullable Enumeration<?> enumeration, Object element)
enumeration
- the Enumeration to checkelement
- the element to look fortrue
if found, false
otherwisepublic static boolean containsInstance(@Nullable Collection<?> collection, Object element)
Enforces the given instance to be present, rather than returning
true
for an equal element as well.
collection
- the Collection to checkelement
- the element to look fortrue
if found, false
otherwisepublic static boolean containsAny(Collection<?> source, Collection<?> candidates)
true
if any element in 'candidates
' is
contained in 'source
'; otherwise returns false
.source
- the source Collectioncandidates
- the candidates to search for@Nullable public static <E> E findFirstMatch(Collection<?> source, Collection<E> candidates)
candidates
' that is contained in
'source
'. If no element in 'candidates
' is present in
'source
' returns null
. Iteration order is
Collection
implementation specific.source
- the source Collectioncandidates
- the candidates to search fornull
if not found@Nullable public static <T> T findValueOfType(Collection<?> collection, @Nullable Class<T> type)
collection
- the Collection to searchtype
- the type to look fornull
if none or more than one such value found@Nullable public static Object findValueOfType(Collection<?> collection, Class<?>[] types)
collection
- the collection to searchtypes
- the types to look for, in prioritized ordernull
if none or more than one such value foundpublic static boolean hasUniqueObject(Collection<?> collection)
collection
- the Collection to checktrue
if the collection contains a single reference or
multiple references to the same instance, false
otherwise@Nullable public static Class<?> findCommonElementType(Collection<?> collection)
collection
- the Collection to checknull
if no clear
common type has been found (or the collection was empty)@Nullable public static <T> T firstElement(@Nullable Set<T> set)
SortedSet.first()
or otherwise using the iterator.set
- the Set to check (may be null
or empty)null
if noneSortedSet
,
LinkedHashMap.keySet()
,
LinkedHashSet
@Nullable public static <T> T firstElement(@Nullable List<T> list)
list
- the List to check (may be null
or empty)null
if none@Nullable public static <T> T lastElement(@Nullable Set<T> set)
SortedSet.last()
or otherwise iterating over all elements (assuming a linked set).set
- the Set to check (may be null
or empty)null
if noneSortedSet
,
LinkedHashMap.keySet()
,
LinkedHashSet
@Nullable public static <T> T lastElement(@Nullable List<T> list)
list
- the List to check (may be null
or empty)null
if nonepublic static <A,E extends A> A[] toArray(Enumeration<E> enumeration, A[] array)
public static <E> Iterator<E> toIterator(@Nullable Enumeration<E> enumeration)
Enumeration
to an Iterator
.enumeration
- the original Enumeration
Iterator
public static <K,V> MultiValueMap<K,V> toMultiValueMap(Map<K,List<V>> targetMap)
Map<K, List<V>>
to an MultiValueMap<K, V>
.targetMap
- the original mappublic static <K,V> MultiValueMap<K,V> unmodifiableMultiValueMap(MultiValueMap<? extends K,? extends V> targetMap)
targetMap
- the map for which an unmodifiable view is to be returned.