public class IterableUtils extends Object
Iterable instances.
Note: this util class has been designed for fail-fast argument checking.
NullPointerException if a null Iterable is passed as argument. Predicate, will result in a NullPointerException. Exception: passing a null Comparator is equivalent to a Comparator with natural ordering. | Constructor and Description |
|---|
IterableUtils()
|
| Modifier and Type | Method and Description |
|---|---|
static <E> Iterable |
boundedIterable(Iterable
Returns a view of the given iterable that contains at most the given number of elements.
|
static <E> Iterable |
chainedIterable(Iterable
Combines the provided iterables into a single iterable.
|
static <E> Iterable |
chainedIterable(Iterable
Combines two iterables into a single iterable.
|
static <E> Iterable |
chainedIterable(Iterable
Combines three iterables into a single iterable.
|
static <E> Iterable |
chainedIterable(Iterable
Combines four iterables into a single iterable.
|
static <E> Iterable |
collatedIterable(Comparator
Combines the two provided iterables into an ordered iterable using the provided comparator.
|
static <E> Iterable |
collatedIterable(Iterable
Combines the two provided iterables into an ordered iterable using natural ordering.
|
static <E> boolean |
contains(Iterable
Checks if the object is contained in the given iterable.
|
static <E> boolean |
contains(Iterable
Checks if the object is contained in the given iterable.
|
static <E> long |
countMatches(Iterable
Counts the number of elements in the input iterable that match the predicate.
|
static <E> Iterable |
emptyIfNull(Iterable
Returns an immutable empty iterable if the argument is null, or the argument itself otherwise.
|
static <E> Iterable |
emptyIterable()
Gets an empty iterable.
|
static <E> Iterable |
filteredIterable(Iterable
Returns a view of the given iterable that only contains elements matching the provided predicate.
|
static <E> E |
find(Iterable
Finds the first element in the given iterable which matches the given predicate.
|
static <E> void |
forEach(Iterable
Applies the closure to each element of the provided iterable.
|
static <E> E |
forEachButLast(Iterable
Executes the given closure on each but the last element in the iterable.
|
static <E |
frequency(Iterable
Returns the number of occurrences of the provided object in the iterable.
|
static <T> T |
get(Iterable
Returns the
index-th value in the
iterable's
Iterator, throwing
IndexOutOfBoundsException if there is no such element.
|
static <E> int |
indexOf(Iterable
Returns the index of the first element in the specified iterable that matches the given predicate.
|
static boolean |
isEmpty(Iterable
Answers true if the provided iterable is empty.
|
static <E> Iterable |
loopingIterable(Iterable
Returns a view of the given iterable which will cycle infinitely over its elements.
|
static <E> boolean |
matchesAll(Iterable
Answers true if a predicate is true for every element of an iterable.
|
static <E> boolean |
matchesAny(Iterable
Answers true if a predicate is true for any element of the iterable.
|
static <O |
partition(Iterable
Partitions all elements from iterable into separate output collections, based on the evaluation of the given predicates.
|
static <O> List |
partition(Iterable
Partitions all elements from iterable into separate output collections, based on the evaluation of the given predicates.
|
static <O> List |
partition(Iterable
Partitions all elements from iterable into separate output collections, based on the evaluation of the given predicate.
|
static <E> Iterable |
reversedIterable(Iterable
Returns a reversed view of the given iterable.
|
static int |
size(Iterable
Returns the number of elements contained in the given iterator.
|
static <E> Iterable |
skippingIterable(Iterable
Returns a view of the given iterable that skips the first N elements.
|
static <E> List |
toList(Iterable
Gets a new list with the contents of the provided iterable.
|
static <E> String |
toString(Iterable
Returns a string representation of the elements of the specified iterable.
|
static <E> String |
toString(Iterable
Returns a string representation of the elements of the specified iterable.
|
static <E> String |
toString(Iterable
Returns a string representation of the elements of the specified iterable.
|
static <I |
transformedIterable(Iterable
Returns a transformed view of the given iterable where all of its elements have been transformed by the provided transformer.
|
static <E> Iterable |
uniqueIterable(Iterable
Returns a unique view of the given iterable.
|
static <E> Iterable |
unmodifiableIterable(Iterable
Returns an unmodifiable view of the given iterable.
|
static <E> Iterable |
zippingIterable(Iterable
Interleaves two iterables into a single iterable.
|
static <E> Iterable |
zippingIterable(Iterable
Interleaves two iterables into a single iterable.
|
public static <E> Iterable<E> emptyIterable()
This iterable does not contain any elements.
E - the element type
public static <E> Iterable<E> chainedIterable(Iterable <? extends E> a, Iterable <? extends E> b)
The returned iterable has an iterator that traverses the elements in a, followed by the elements in b. The source iterators are not polled until necessary.
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
a - the first iterable, may not be null
b - the second iterable, may not be null
NullPointerException - if either a or b is null
public static <E> Iterable<E> chainedIterable(Iterable <? extends E> a, Iterable <? extends E> b, Iterable <? extends E> c)
The returned iterable has an iterator that traverses the elements in a, followed by the elements in b and c. The source iterators are not polled until necessary.
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
a - the first iterable, may not be null
b - the second iterable, may not be null
c - the third iterable, may not be null
NullPointerException - if either of the provided iterables is null
public static <E> Iterable<E> chainedIterable(Iterable <? extends E> a, Iterable <? extends E> b, Iterable <? extends E> c, Iterable <? extends E> d)
The returned iterable has an iterator that traverses the elements in a, followed by the elements in b, c and d. The source iterators are not polled until necessary.
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
a - the first iterable, may not be null
b - the second iterable, may not be null
c - the third iterable, may not be null
d - the fourth iterable, may not be null
NullPointerException - if either of the provided iterables is null
public static <E> Iterable<E> chainedIterable(Iterable <? extends E>... iterables)
The returned iterable has an iterator that traverses the elements in the order of the arguments, i.e. iterables[0], iterables[1], .... The source iterators are not polled until necessary.
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
iterables - the iterables to combine, may not be null
NullPointerException - if either of the provided iterables is null
public static <E> Iterable<E> collatedIterable(Iterable <? extends E> a, Iterable <? extends E> b)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
a - the first iterable, may not be null
b - the second iterable, may not be null
NullPointerException - if either of the provided iterables is null
public static <E> Iterable<E> collatedIterable(Comparator <? super E> comparator, Iterable <? extends E> a, Iterable <? extends E> b)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
comparator - the comparator defining an ordering over the elements, may be null, in which case natural ordering will be used
a - the first iterable, may not be null
b - the second iterable, may not be null
NullPointerException - if either of the provided iterables is null
public static <E> Iterable<E> filteredIterable(Iterable <E> iterable, Predicate <? super E> predicate)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
iterable - the iterable to filter, may not be null
predicate - the predicate used to filter elements, may not be null
NullPointerException - if either iterable or predicate is null
public static <E> Iterable<E> boundedIterable(Iterable <E> iterable, long maxSize)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
iterable - the iterable to limit, may not be null
maxSize - the maximum number of elements, must not be negative
IllegalArgumentException - if maxSize is negative
NullPointerException - if iterable is null
public static <E> Iterable<E> loopingIterable(Iterable <E> iterable)
The returned iterable's iterator supports remove() if iterable.iterator() does. After remove() is called, subsequent cycles omit the removed element, which is no longer in iterable. The iterator's hasNext() method returns true until iterable is empty.
E - the element type
iterable - the iterable to loop, may not be null
NullPointerException - if iterable is null
public static <E> Iterable<E> reversedIterable(Iterable <E> iterable)
In case the provided iterable is a List instance, a ReverseListIterator will be used to reverse the traversal order, otherwise an intermediate List needs to be created.
The returned iterable's iterator supports remove() if the provided iterable is a List instance.
E - the element type
iterable - the iterable to use, may not be null
NullPointerException - if iterable is null
ReverseListIterator
public static <E> Iterable<E> skippingIterable(Iterable <E> iterable, long elementsToSkip)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
iterable - the iterable to use, may not be null
elementsToSkip - the number of elements to skip from the start, must not be negative
IllegalArgumentException - if elementsToSkip is negative
NullPointerException - if iterable is null
public static <I,O> Iterable <O> transformedIterable(Iterable <I> iterable, Transformer <? super I ,? extends O> transformer)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
I - the input element type
O - the output element type
iterable - the iterable to transform, may not be null
transformer - the transformer, must not be null
NullPointerException - if either iterable or transformer is null
public static <E> Iterable<E> uniqueIterable(Iterable <E> iterable)
The returned iterable's iterator supports remove() when the corresponding input iterator supports it. Calling remove() will only remove a single element from the underlying iterator.
E - the element type
iterable - the iterable to use, may not be null
NullPointerException - if iterable is null
public static <E> Iterable<E> unmodifiableIterable(Iterable <E> iterable)
The returned iterable's iterator does not support remove().
E - the element type
iterable - the iterable to use, may not be null
NullPointerException - if iterable is null
public static <E> Iterable<E> zippingIterable(Iterable <? extends E> a, Iterable <? extends E> b)
The returned iterable has an iterator that traverses the elements in a and b in alternating order. The source iterators are not polled until necessary.
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
a - the first iterable, may not be null
b - the second iterable, may not be null
NullPointerException - if either a or b is null
public static <E> Iterable<E> zippingIterable(Iterable <? extends E> first, Iterable <? extends E>... others)
The returned iterable has an iterator that traverses the elements in a and b in alternating order. The source iterators are not polled until necessary.
The returned iterable's iterator supports remove() when the corresponding input iterator supports it.
E - the element type
first - the first iterable, may not be null
others - the array of iterables to interleave, may not be null
NullPointerException - if either of the provided iterables is null
public static <E> Iterable<E> emptyIfNull(Iterable <E> iterable)
E - the element type
iterable - the iterable, may be null
public static <E> void forEach(Iterable<E> iterable, Closure <? super E> closure)
E - the element type
iterable - the iterator to use, may be null
closure - the closure to apply to each element, may not be null
NullPointerException - if closure is null
public static <E> E forEachButLast(Iterable<E> iterable, Closure <? super E> closure)
If the input iterable is null no change is made.
E - the type of object the
Iterable contains
iterable - the iterable to get the input from, may be null
closure - the closure to perform, may not be null
public static <E> E find(Iterable<E> iterable, Predicate <? super E> predicate)
A null or empty iterator returns null.
E - the element type
iterable - the iterable to search, may be null
predicate - the predicate to use, may not be null
NullPointerException - if predicate is null
public static <E> int indexOf(Iterable<E> iterable, Predicate <? super E> predicate)
A null or empty iterable returns -1.
E - the element type
iterable - the iterable to search, may be null
predicate - the predicate to use, may not be null
NullPointerException - if predicate is null
public static <E> boolean matchesAll(Iterable<E> iterable, Predicate <? super E> predicate)
A null or empty iterable returns true.
E - the type of object the
Iterable contains
iterable - the
Iterable to use, may be null
predicate - the predicate to use, may not be null
NullPointerException - if predicate is null
public static <E> boolean matchesAny(Iterable<E> iterable, Predicate <? super E> predicate)
A null or empty iterable returns false.
E - the type of object the
Iterable contains
iterable - the
Iterable to use, may be null
predicate - the predicate to use, may not be null
NullPointerException - if predicate is null
public static <E> long countMatches(Iterable<E> input, Predicate <? super E> predicate)
A null iterable matches no elements.
E - the type of object the
Iterable contains
input - the
Iterable to get the input from, may be null
predicate - the predicate to use, may not be null
NullPointerException - if predicate is null
public static boolean isEmpty(Iterable<?> iterable)
A null iterable returns true.
iterable - the
to use, may be null
public static <E> boolean contains(Iterable<E> iterable, Object object)
A null or empty iterable returns false.
E - the type of object the
Iterable contains
iterable - the iterable to check, may be null
object - the object to check
public static <E> boolean contains(Iterable<? extends E> iterable, E object, Equator <? super E> equator)
equator unlike
contains(Iterable, Object) which uses
Object.equals(Object) .
A null or empty iterable returns false. A null object will not be passed to the equator, instead a NullPredicate will be used.
E - the type of object the
Iterable contains
iterable - the iterable to check, may be null
object - the object to check
equator - the equator to use to check, may not be null
NullPointerException - if equator is null
public static <E,T extends E> int frequency(Iterable <E> iterable, T obj)
public static <T> T get(Iterable<T> iterable, int index)
index-th value in the
iterable's
Iterator, throwing
IndexOutOfBoundsException if there is no such element.
If the Iterable is a List, then it will use List.
T - the type of object in the
Iterable.
iterable - the
Iterable to get a value from, may be null
index - the index to get
IndexOutOfBoundsException - if the index is invalid
public static int size(Iterable<?> iterable)
A null or empty iterator returns 0.
iterable - the iterable to check, may be null
public static <O> List<List <O>> partition(Iterable <? extends O> iterable, Predicate <? super O> predicate)
For each predicate, the result will contain a list holding all elements of the input iterable matching the predicate. The last list will hold all elements which didn't match any predicate:
[C1, R] = partition(I, P1) with I = input P1 = first predicate C1 = collection of elements matching P1 R = collection of elements rejected by all predicates
If the input iterable is null, the same is returned as for an empty iterable.
Example: for an input list [1, 2, 3, 4, 5] calling partition with a predicate [x < 3] will result in the following output: [[1, 2], [3, 4, 5]].
O - the type of object the
Iterable contains
iterable - the iterable to partition, may be null
predicate - the predicate to use, may not be null
NullPointerException - if predicate is null
public static <O> List<List <O>> partition(Iterable <? extends O> iterable, Predicate <? super O>... predicates)
For each predicate, the result will contain a list holding all elements of the input iterable matching the predicate. The last list will hold all elements which didn't match any predicate:
[C1, C2, R] = partition(I, P1, P2) with I = input P1 = first predicate P2 = second predicate C1 = collection of elements matching P1 C2 = collection of elements matching P2 R = collection of elements rejected by all predicates
Note: elements are only added to the output collection of the first matching predicate, determined by the order of arguments.
If the input iterable is null, the same is returned as for an empty iterable.
Example: for an input list [1, 2, 3, 4, 5] calling partition with predicates [x < 3] and [x < 5] will result in the following output: [[1, 2], [3, 4], [5]].
O - the type of object the
Iterable contains
iterable - the collection to get the input from, may be null
predicates - the predicates to use, may not be null
NullPointerException - if any predicate is null
public static <O,R extends Collection <O>> List <R> partition(Iterable <? extends O> iterable, Factory <R> partitionFactory, Predicate <? super O>... predicates)
For each predicate, the returned list will contain a collection holding all elements of the input iterable matching the predicate. The last collection contained in the list will hold all elements which didn't match any predicate:
[C1, C2, R] = partition(I, P1, P2) with I = input P1 = first predicate P2 = second predicate C1 = collection of elements matching P1 C2 = collection of elements matching P2 R = collection of elements rejected by all predicates
Note: elements are only added to the output collection of the first matching predicate, determined by the order of arguments.
If the input iterable is null, the same is returned as for an empty iterable. If no predicates have been provided, all elements of the input collection will be added to the rejected collection.
Example: for an input list [1, 2, 3, 4, 5] calling partition with predicates [x < 3] and [x < 5] will result in the following output: [[1, 2], [3, 4], [5]].
O - the type of object the
Iterable contains
R - the type of the output
Collection
iterable - the collection to get the input from, may be null
partitionFactory - the factory used to create the output collections
predicates - the predicates to use, may not be null
NullPointerException - if any predicate is null
public static <E> List<E> toList(Iterable <E> iterable)
E - the element type
iterable - the iterable to use, may be null
public static <E> StringtoString(Iterable <E> iterable)
The string representation consists of a list of the iterable's elements, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (a comma followed by a space). Elements are converted to strings as by String.valueOf(Object).
E - the element type
iterable - the iterable to convert to a string, may be null
iterable
public static <E> StringtoString(Iterable <E> iterable, Transformer <? super E ,String > transformer)
The string representation consists of a list of the iterable's elements, enclosed in square brackets ("[]"). Adjacent elements are separated by the characters ", " (a comma followed by a space). Elements are converted to strings as by using the provided transformer.
E - the element type
iterable - the iterable to convert to a string, may be null
transformer - the transformer used to get a string representation of an element
iterable
NullPointerException - if
transformer is null
public static <E> StringtoString(Iterable <E> iterable, Transformer <? super E ,String > transformer, String delimiter, String prefix, String suffix)
The string representation consists of a list of the iterable's elements, enclosed by the provided prefix and suffix. Adjacent elements are separated by the provided delimiter. Elements are converted to strings as by using the provided transformer.
E - the element type
iterable - the iterable to convert to a string, may be null
transformer - the transformer used to get a string representation of an element
delimiter - the string to delimit elements
prefix - the prefix, prepended to the string representation
suffix - the suffix, appended to the string representation
iterable
NullPointerException - if either transformer, delimiter, prefix or suffix is null