public class IteratorUtils
extends java.lang.Object
Iterator
instances. The implementations are provided in the iterators subpackage.Modifier and Type | Field and Description |
---|---|
static ResettableIterator |
EMPTY_ITERATOR
An iterator over no elements.
|
static ResettableListIterator |
EMPTY_LIST_ITERATOR
A list iterator over no elements.
|
static MapIterator |
EMPTY_MAP_ITERATOR
A map iterator over no elements.
|
static OrderedIterator |
EMPTY_ORDERED_ITERATOR
An ordered iterator over no elements.
|
static OrderedMapIterator |
EMPTY_ORDERED_MAP_ITERATOR
An ordered map iterator over no elements.
|
Modifier and Type | Method and Description |
---|---|
static <E> ResettableIterator<E> |
arrayIterator(E... array)
Gets an iterator over an object array.
|
static <E> ResettableIterator<E> |
arrayIterator(E[] array,
int start)
Gets an iterator over the end part of an object array.
|
static <E> ResettableIterator<E> |
arrayIterator(E[] array,
int start,
int end)
Gets an iterator over part of an object array.
|
static <E> ResettableIterator<E> |
arrayIterator(java.lang.Object array)
Gets an iterator over an object or primitive array.
|
static <E> ResettableIterator<E> |
arrayIterator(java.lang.Object array,
int start)
Gets an iterator over the end part of an object or primitive array.
|
static <E> ResettableIterator<E> |
arrayIterator(java.lang.Object array,
int start,
int end)
Gets an iterator over part of an object or primitive array.
|
static <E> ResettableListIterator<E> |
arrayListIterator(E... array)
Gets a list iterator over an object array.
|
static <E> ResettableListIterator<E> |
arrayListIterator(E[] array,
int start)
Gets a list iterator over the end part of an object array.
|
static <E> ResettableListIterator<E> |
arrayListIterator(E[] array,
int start,
int end)
Gets a list iterator over part of an object array.
|
static <E> ResettableListIterator<E> |
arrayListIterator(java.lang.Object array)
Gets a list iterator over an object or primitive array.
|
static <E> ResettableListIterator<E> |
arrayListIterator(java.lang.Object array,
int start)
Gets a list iterator over the end part of an object or primitive array.
|
static <E> ResettableListIterator<E> |
arrayListIterator(java.lang.Object array,
int start,
int end)
Gets a list iterator over part of an object or primitive array.
|
static <E> java.util.Enumeration<E> |
asEnumeration(java.util.Iterator<? extends E> iterator)
Gets an enumeration that wraps an iterator.
|
static <E> java.lang.Iterable<E> |
asIterable(java.util.Iterator<? extends E> iterator)
Gets an
Iterable that wraps an iterator. |
static <E> java.util.Iterator<E> |
asIterator(java.util.Enumeration<? extends E> enumeration)
Gets an iterator that provides an iterator view of the given enumeration.
|
static <E> java.util.Iterator<E> |
asIterator(java.util.Enumeration<? extends E> enumeration,
java.util.Collection<? super E> removeCollection)
Gets an iterator that provides an iterator view of the given enumeration
that will remove elements from the specified collection.
|
static <E> java.lang.Iterable<E> |
asMultipleUseIterable(java.util.Iterator<? extends E> iterator)
Gets an iterable that wraps an iterator.
|
static <E> BoundedIterator<E> |
boundedIterator(java.util.Iterator<? extends E> iterator,
long max)
Decorates the specified iterator to return at most the given number
of elements.
|
static <E> BoundedIterator<E> |
boundedIterator(java.util.Iterator<? extends E> iterator,
long offset,
long max)
Decorates the specified iterator to return at most the given number
of elements, skipping all elements until the iterator reaches the
position at
offset . |
static <E> java.util.Iterator<E> |
chainedIterator(java.util.Collection<java.util.Iterator<? extends E>> iterators)
Gets an iterator that iterates through a collections of
Iterator s
one after another. |
static <E> java.util.Iterator<E> |
chainedIterator(java.util.Iterator<? extends E>... iterators)
Gets an iterator that iterates through an array of
Iterator s
one after another. |
static <E> java.util.Iterator<E> |
chainedIterator(java.util.Iterator<? extends E> iterator1,
java.util.Iterator<? extends E> iterator2)
Gets an iterator that iterates through two
Iterator s
one after another. |
static <E> java.util.Iterator<E> |
collatedIterator(java.util.Comparator<? super E> comparator,
java.util.Collection<java.util.Iterator<? extends E>> iterators)
Gets an iterator that provides an ordered iteration over the elements
contained in a collection of
Iterator s. |
static <E> java.util.Iterator<E> |
collatedIterator(java.util.Comparator<? super E> comparator,
java.util.Iterator<? extends E>... iterators)
Gets an iterator that provides an ordered iteration over the elements
contained in an array of
Iterator s. |
static <E> java.util.Iterator<E> |
collatedIterator(java.util.Comparator<? super E> comparator,
java.util.Iterator<? extends E> iterator1,
java.util.Iterator<? extends E> iterator2)
Gets an iterator that provides an ordered iteration over the elements
contained in a collection of ordered
Iterator s. |
static <E> boolean |
contains(java.util.Iterator<E> iterator,
java.lang.Object object)
Checks if the object is contained in the given iterator.
|
static <E> ResettableIterator<E> |
emptyIterator()
Gets an empty iterator.
|
static <E> ResettableListIterator<E> |
emptyListIterator()
Gets an empty list iterator.
|
static <K,V> MapIterator<K,V> |
emptyMapIterator()
Gets an empty map iterator.
|
static <E> OrderedIterator<E> |
emptyOrderedIterator()
Gets an empty ordered iterator.
|
static <K,V> OrderedMapIterator<K,V> |
emptyOrderedMapIterator()
Gets an empty ordered map iterator.
|
static <E> java.util.Iterator<E> |
filteredIterator(java.util.Iterator<? extends E> iterator,
Predicate<? super E> predicate)
Gets an iterator that filters another iterator.
|
static <E> java.util.ListIterator<E> |
filteredListIterator(java.util.ListIterator<? extends E> listIterator,
Predicate<? super E> predicate)
Gets a list iterator that filters another list iterator.
|
static <E> E |
find(java.util.Iterator<E> iterator,
Predicate<? super E> predicate)
Finds the first element in the given iterator which matches the given predicate.
|
static <E> void |
forEach(java.util.Iterator<E> iterator,
Closure<? super E> closure)
Applies the closure to each element of the provided iterator.
|
static <E> E |
forEachButLast(java.util.Iterator<E> iterator,
Closure<? super E> closure)
Executes the given closure on each but the last element in the iterator.
|
static <E> E |
get(java.util.Iterator<E> iterator,
int index)
Returns the
index -th value in Iterator , throwing
IndexOutOfBoundsException if there is no such element. |
static java.util.Iterator<?> |
getIterator(java.lang.Object obj)
Gets a suitable Iterator for the given object.
|
static <E> int |
indexOf(java.util.Iterator<E> iterator,
Predicate<? super E> predicate)
Returns the index of the first element in the specified iterator that
matches the given predicate.
|
static boolean |
isEmpty(java.util.Iterator<?> iterator)
Checks if the given iterator is empty.
|
static <E> ResettableIterator<E> |
loopingIterator(java.util.Collection<? extends E> coll)
Gets an iterator that loops continuously over the supplied collection.
|
static <E> ResettableListIterator<E> |
loopingListIterator(java.util.List<E> list)
Gets an iterator that loops continuously over the supplied list.
|
static <E> boolean |
matchesAll(java.util.Iterator<E> iterator,
Predicate<? super E> predicate)
Answers true if a predicate is true for every element of an iterator.
|
static <E> boolean |
matchesAny(java.util.Iterator<E> iterator,
Predicate<? super E> predicate)
Answers true if a predicate is true for any element of the iterator.
|
static NodeListIterator |
nodeListIterator(org.w3c.dom.Node node)
Gets an
Iterator that wraps the specified node's childNodes. |
static NodeListIterator |
nodeListIterator(org.w3c.dom.NodeList nodeList)
Gets an
Iterator that wraps the specified NodeList . |
static <E> java.util.Iterator<E> |
objectGraphIterator(E root,
Transformer<? super E,? extends E> transformer)
Gets an iterator that operates over an object graph.
|
static <E> java.util.Iterator<E> |
peekingIterator(java.util.Iterator<? extends E> iterator)
Gets an iterator that supports one-element lookahead.
|
static <E> java.util.Iterator<E> |
pushbackIterator(java.util.Iterator<? extends E> iterator)
Gets an iterator that supports pushback of elements.
|
static <E> ResettableIterator<E> |
singletonIterator(E object)
Gets a singleton iterator.
|
static <E> java.util.ListIterator<E> |
singletonListIterator(E object)
Gets a singleton list iterator.
|
static int |
size(java.util.Iterator<?> iterator)
Returns the number of elements contained in the given iterator.
|
static <E> SkippingIterator<E> |
skippingIterator(java.util.Iterator<E> iterator,
long offset)
Decorates the specified iterator to skip the first N elements.
|
static java.lang.Object[] |
toArray(java.util.Iterator<?> iterator)
Gets an array based on an iterator.
|
static <E> E[] |
toArray(java.util.Iterator<? extends E> iterator,
java.lang.Class<E> arrayClass)
Gets an array based on an iterator.
|
static <E> java.util.List<E> |
toList(java.util.Iterator<? extends E> iterator)
Gets a list based on an iterator.
|
static <E> java.util.List<E> |
toList(java.util.Iterator<? extends E> iterator,
int estimatedSize)
Gets a list based on an iterator.
|
static <E> java.util.ListIterator<E> |
toListIterator(java.util.Iterator<? extends E> iterator)
Gets a list iterator based on a simple iterator.
|
static <E> java.lang.String |
toString(java.util.Iterator<E> iterator)
Returns a string representation of the elements of the specified iterator.
|
static <E> java.lang.String |
toString(java.util.Iterator<E> iterator,
Transformer<? super E,java.lang.String> transformer)
Returns a string representation of the elements of the specified iterator.
|
static <E> java.lang.String |
toString(java.util.Iterator<E> iterator,
Transformer<? super E,java.lang.String> transformer,
java.lang.String delimiter,
java.lang.String prefix,
java.lang.String suffix)
Returns a string representation of the elements of the specified iterator.
|
static <I,O> java.util.Iterator<O> |
transformedIterator(java.util.Iterator<? extends I> iterator,
Transformer<? super I,? extends O> transform)
Gets an iterator that transforms the elements of another iterator.
|
static <E> java.util.Iterator<E> |
unmodifiableIterator(java.util.Iterator<E> iterator)
Gets an immutable version of an
Iterator . |
static <E> java.util.ListIterator<E> |
unmodifiableListIterator(java.util.ListIterator<E> listIterator)
Gets an immutable version of a
ListIterator . |
static <K,V> MapIterator<K,V> |
unmodifiableMapIterator(MapIterator<K,V> mapIterator)
Gets an immutable version of a
MapIterator . |
static <E> ZippingIterator<E> |
zippingIterator(java.util.Iterator<? extends E>... iterators)
Returns an iterator that interleaves elements from the decorated iterators.
|
static <E> ZippingIterator<E> |
zippingIterator(java.util.Iterator<? extends E> a,
java.util.Iterator<? extends E> b)
Returns an iterator that interleaves elements from the decorated iterators.
|
static <E> ZippingIterator<E> |
zippingIterator(java.util.Iterator<? extends E> a,
java.util.Iterator<? extends E> b,
java.util.Iterator<? extends E> c)
Returns an iterator that interleaves elements from the decorated iterators.
|
public static final ResettableIterator EMPTY_ITERATOR
public static final ResettableListIterator EMPTY_LIST_ITERATOR
public static final OrderedIterator EMPTY_ORDERED_ITERATOR
public static final MapIterator EMPTY_MAP_ITERATOR
public static final OrderedMapIterator EMPTY_ORDERED_MAP_ITERATOR
public static <E> ResettableIterator<E> emptyIterator()
This iterator is a valid iterator object that will iterate over nothing.
E
- the element typepublic static <E> ResettableListIterator<E> emptyListIterator()
This iterator is a valid list iterator object that will iterate over nothing.
E
- the element typepublic static <E> OrderedIterator<E> emptyOrderedIterator()
This iterator is a valid iterator object that will iterate over nothing.
E
- the element typepublic static <K,V> MapIterator<K,V> emptyMapIterator()
This iterator is a valid map iterator object that will iterate over nothing.
K
- the key typeV
- the value typepublic static <K,V> OrderedMapIterator<K,V> emptyOrderedMapIterator()
This iterator is a valid map iterator object that will iterate over nothing.
K
- the key typeV
- the value typepublic static <E> ResettableIterator<E> singletonIterator(E object)
This iterator is a valid iterator object that will iterate over the specified object.
E
- the element typeobject
- the single object over which to iteratepublic static <E> java.util.ListIterator<E> singletonListIterator(E object)
This iterator is a valid list iterator object that will iterate over the specified object.
E
- the element typeobject
- the single object over which to iteratepublic static <E> ResettableIterator<E> arrayIterator(E... array)
E
- the element typearray
- the array over which to iteratejava.lang.NullPointerException
- if array is nullpublic static <E> ResettableIterator<E> arrayIterator(java.lang.Object array)
This method will handle primitive arrays as well as object arrays. The primitives will be wrapped in the appropriate wrapper class.
E
- the element typearray
- the array over which to iteratejava.lang.IllegalArgumentException
- if the array is not an arrayjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableIterator<E> arrayIterator(E[] array, int start)
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atjava.lang.IndexOutOfBoundsException
- if start is less than zero or greater
than the length of the arrayjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableIterator<E> arrayIterator(java.lang.Object array, int start)
This method will handle primitive arrays as well as object arrays. The primitives will be wrapped in the appropriate wrapper class.
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atjava.lang.IllegalArgumentException
- if the array is not an arrayjava.lang.IndexOutOfBoundsException
- if start is less than zero or greater
than the length of the arrayjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableIterator<E> arrayIterator(E[] array, int start, int end)
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atend
- the index to finish iterating atjava.lang.IndexOutOfBoundsException
- if array bounds are invalidjava.lang.IllegalArgumentException
- if end is before startjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableIterator<E> arrayIterator(java.lang.Object array, int start, int end)
This method will handle primitive arrays as well as object arrays. The primitives will be wrapped in the appropriate wrapper class.
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atend
- the index to finish iterating atjava.lang.IllegalArgumentException
- if the array is not an array or end is before startjava.lang.IndexOutOfBoundsException
- if array bounds are invalidjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableListIterator<E> arrayListIterator(E... array)
E
- the element typearray
- the array over which to iteratejava.lang.NullPointerException
- if array is nullpublic static <E> ResettableListIterator<E> arrayListIterator(java.lang.Object array)
This method will handle primitive arrays as well as object arrays. The primitives will be wrapped in the appropriate wrapper class.
E
- the element typearray
- the array over which to iteratejava.lang.IllegalArgumentException
- if the array is not an arrayjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableListIterator<E> arrayListIterator(E[] array, int start)
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atjava.lang.IndexOutOfBoundsException
- if start is less than zerojava.lang.NullPointerException
- if array is nullpublic static <E> ResettableListIterator<E> arrayListIterator(java.lang.Object array, int start)
This method will handle primitive arrays as well as object arrays. The primitives will be wrapped in the appropriate wrapper class.
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atjava.lang.IllegalArgumentException
- if the array is not an arrayjava.lang.IndexOutOfBoundsException
- if start is less than zerojava.lang.NullPointerException
- if array is nullpublic static <E> ResettableListIterator<E> arrayListIterator(E[] array, int start, int end)
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atend
- the index to finish iterating atjava.lang.IndexOutOfBoundsException
- if array bounds are invalidjava.lang.IllegalArgumentException
- if end is before startjava.lang.NullPointerException
- if array is nullpublic static <E> ResettableListIterator<E> arrayListIterator(java.lang.Object array, int start, int end)
This method will handle primitive arrays as well as object arrays. The primitives will be wrapped in the appropriate wrapper class.
E
- the element typearray
- the array over which to iteratestart
- the index to start iterating atend
- the index to finish iterating atjava.lang.IllegalArgumentException
- if the array is not an array or end is before startjava.lang.IndexOutOfBoundsException
- if array bounds are invalidjava.lang.NullPointerException
- if array is nullpublic static <E> BoundedIterator<E> boundedIterator(java.util.Iterator<? extends E> iterator, long max)
E
- the element typeiterator
- the iterator to decoratemax
- the maximum number of elements returned by this iteratorjava.lang.NullPointerException
- if the iterator is nulljava.lang.IllegalArgumentException
- if max is negativepublic static <E> BoundedIterator<E> boundedIterator(java.util.Iterator<? extends E> iterator, long offset, long max)
offset
.
The iterator is immediately advanced until it reaches the position at
offset
, incurring O(n) time.
E
- the element typeiterator
- the iterator to decorateoffset
- the index of the first element of the decorated iterator to returnmax
- the maximum number of elements returned by this iteratorjava.lang.NullPointerException
- if the iterator is nulljava.lang.IllegalArgumentException
- if either offset or max is negativepublic static <E> java.util.Iterator<E> unmodifiableIterator(java.util.Iterator<E> iterator)
Iterator
. The returned object
will always throw an UnsupportedOperationException
for
the Iterator.remove()
method.E
- the element typeiterator
- the iterator to make immutablepublic static <E> java.util.ListIterator<E> unmodifiableListIterator(java.util.ListIterator<E> listIterator)
ListIterator
. The returned object
will always throw an UnsupportedOperationException
for
the Iterator.remove()
, ListIterator.add(E)
and
ListIterator.set(E)
methods.E
- the element typelistIterator
- the iterator to make immutablepublic static <K,V> MapIterator<K,V> unmodifiableMapIterator(MapIterator<K,V> mapIterator)
MapIterator
. The returned object
will always throw an UnsupportedOperationException
for
the Iterator.remove()
, MapIterator.setValue(Object)
methods.K
- the key typeV
- the value typemapIterator
- the iterator to make immutablepublic static <E> java.util.Iterator<E> chainedIterator(java.util.Iterator<? extends E> iterator1, java.util.Iterator<? extends E> iterator2)
Iterator
s
one after another.E
- the element typeiterator1
- the first iterator to use, not nulliterator2
- the second iterator to use, not nulljava.lang.NullPointerException
- if either iterator is nullpublic static <E> java.util.Iterator<E> chainedIterator(java.util.Iterator<? extends E>... iterators)
Iterator
s
one after another.E
- the element typeiterators
- the iterators to use, not null or empty or contain nullsjava.lang.NullPointerException
- if iterators array is null or contains a nullpublic static <E> java.util.Iterator<E> chainedIterator(java.util.Collection<java.util.Iterator<? extends E>> iterators)
Iterator
s
one after another.E
- the element typeiterators
- the iterators to use, not null or empty or contain nullsjava.lang.NullPointerException
- if iterators collection is null or contains a nulljava.lang.ClassCastException
- if the iterators collection contains the wrong object typepublic static <E> java.util.Iterator<E> collatedIterator(java.util.Comparator<? super E> comparator, java.util.Iterator<? extends E> iterator1, java.util.Iterator<? extends E> iterator2)
Iterator
s.
Given two ordered Iterator
s A
and B
,
the Iterator.next()
method will return the lesser of
A.next()
and B.next()
.
The comparator is optional. If null is specified then natural order is used.
E
- the element typecomparator
- the comparator to use, may be null for natural orderiterator1
- the first iterators to use, not nulliterator2
- the first iterators to use, not nulljava.lang.NullPointerException
- if either iterator is nullpublic static <E> java.util.Iterator<E> collatedIterator(java.util.Comparator<? super E> comparator, java.util.Iterator<? extends E>... iterators)
Iterator
s.
Given two ordered Iterator
s A
and B
,
the Iterator.next()
method will return the lesser of
A.next()
and B.next()
and so on.
The comparator is optional. If null is specified then natural order is used.
E
- the element typecomparator
- the comparator to use, may be null for natural orderiterators
- the iterators to use, not null or empty or contain nullsjava.lang.NullPointerException
- if iterators array is null or contains a null valuepublic static <E> java.util.Iterator<E> collatedIterator(java.util.Comparator<? super E> comparator, java.util.Collection<java.util.Iterator<? extends E>> iterators)
Iterator
s.
Given two ordered Iterator
s A
and B
,
the Iterator.next()
method will return the lesser of
A.next()
and B.next()
and so on.
The comparator is optional. If null is specified then natural order is used.
E
- the element typecomparator
- the comparator to use, may be null for natural orderiterators
- the iterators to use, not null or empty or contain nullsjava.lang.NullPointerException
- if iterators collection is null or contains a nulljava.lang.ClassCastException
- if the iterators collection contains the wrong object typepublic static <E> java.util.Iterator<E> objectGraphIterator(E root, Transformer<? super E,? extends E> transformer)
This iterator can extract multiple objects from a complex tree-like object graph.
The iteration starts from a single root object.
It uses a Transformer
to extract the iterators and elements.
Its main benefit is that no intermediate List
is created.
For example, consider an object graph:
|- Branch -- Leaf | \- Leaf |- Tree | /- Leaf | |- Branch -- Leaf Forest | \- Leaf | |- Branch -- Leaf | | \- Leaf |- Tree | /- Leaf |- Branch -- Leaf |- Branch -- LeafThe following
Transformer
, used in this class, will extract all
the Leaf objects without creating a combined intermediate list:
public Object transform(Object input) { if (input instanceof Forest) { return ((Forest) input).treeIterator(); } if (input instanceof Tree) { return ((Tree) input).branchIterator(); } if (input instanceof Branch) { return ((Branch) input).leafIterator(); } if (input instanceof Leaf) { return input; } throw new ClassCastException(); }
Internally, iteration starts from the root object. When next is called, the transformer is called to examine the object. The transformer will return either an iterator or an object. If the object is an Iterator, the next element from that iterator is obtained and the process repeats. If the element is an object it is returned.
Under many circumstances, linking Iterators together in this manner is more efficient (and convenient) than using nested for loops to extract a list.
E
- the element typeroot
- the root object to start iterating from, null results in an empty iteratortransformer
- the transformer to use, see above, null uses no effect transformerpublic static <I,O> java.util.Iterator<O> transformedIterator(java.util.Iterator<? extends I> iterator, Transformer<? super I,? extends O> transform)
The transformation occurs during the next() method and the underlying iterator is unaffected by the transformation.
I
- the input typeO
- the output typeiterator
- the iterator to use, not nulltransform
- the transform to use, not nulljava.lang.NullPointerException
- if either parameter is nullpublic static <E> java.util.Iterator<E> filteredIterator(java.util.Iterator<? extends E> iterator, Predicate<? super E> predicate)
The returned iterator will only return objects that match the specified filtering predicate.
E
- the element typeiterator
- the iterator to use, not nullpredicate
- the predicate to use as a filter, not nulljava.lang.NullPointerException
- if either parameter is nullpublic static <E> java.util.ListIterator<E> filteredListIterator(java.util.ListIterator<? extends E> listIterator, Predicate<? super E> predicate)
The returned iterator will only return objects that match the specified filtering predicate.
E
- the element typelistIterator
- the list iterator to use, not nullpredicate
- the predicate to use as a filter, not nulljava.lang.NullPointerException
- if either parameter is nullpublic static <E> ResettableIterator<E> loopingIterator(java.util.Collection<? extends E> coll)
The iterator will only stop looping if the remove method is called enough times to empty the collection, or if the collection is empty to start with.
E
- the element typecoll
- the collection to iterate over, not nulljava.lang.NullPointerException
- if the collection is nullpublic static <E> ResettableListIterator<E> loopingListIterator(java.util.List<E> list)
The iterator will only stop looping if the remove method is called enough times to empty the list, or if the list is empty to start with.
E
- the element typelist
- the list to iterate over, not nulljava.lang.NullPointerException
- if the list is nullpublic static NodeListIterator nodeListIterator(org.w3c.dom.NodeList nodeList)
Iterator
that wraps the specified NodeList
.
The returned Iterator
can be used for a single iteration.nodeList
- the node list to use, may not be nullIterator
java.lang.NullPointerException
- if nodeList is nullpublic static NodeListIterator nodeListIterator(org.w3c.dom.Node node)
Iterator
that wraps the specified node's childNodes.
The returned Iterator
can be used for a single iteration.
Convenience method, allows easy iteration over NodeLists:
Iterator<Node> iterator = IteratorUtils.nodeListIterator(node); for(Node childNode : IteratorUtils.asIterable(iterator)) { ... }
node
- the node to use, may not be nullIterator
java.lang.NullPointerException
- if node is nullpublic static <E> java.util.Iterator<E> peekingIterator(java.util.Iterator<? extends E> iterator)
E
- the element typeiterator
- the iterator to decorate, not nulljava.lang.NullPointerException
- if the iterator is nullpublic static <E> java.util.Iterator<E> pushbackIterator(java.util.Iterator<? extends E> iterator)
E
- the element typeiterator
- the iterator to decorate, not nulljava.lang.NullPointerException
- if the iterator is nullpublic static <E> SkippingIterator<E> skippingIterator(java.util.Iterator<E> iterator, long offset)
E
- the element typeiterator
- the iterator to decorateoffset
- the first number of elements to skipjava.lang.NullPointerException
- if the iterator is nulljava.lang.IllegalArgumentException
- if offset is negativepublic static <E> ZippingIterator<E> zippingIterator(java.util.Iterator<? extends E> a, java.util.Iterator<? extends E> b)
E
- the element typea
- the first iterator to interleaveb
- the second iterator to interleavejava.lang.NullPointerException
- if any iterator is nullpublic static <E> ZippingIterator<E> zippingIterator(java.util.Iterator<? extends E> a, java.util.Iterator<? extends E> b, java.util.Iterator<? extends E> c)
E
- the element typea
- the first iterator to interleaveb
- the second iterator to interleavec
- the third iterator to interleavejava.lang.NullPointerException
- if any iterator is nullpublic static <E> ZippingIterator<E> zippingIterator(java.util.Iterator<? extends E>... iterators)
E
- the element typeiterators
- the array of iterators to interleavejava.lang.NullPointerException
- if any iterator is nullpublic static <E> java.util.Iterator<E> asIterator(java.util.Enumeration<? extends E> enumeration)
E
- the element typeenumeration
- the enumeration to use, may not be nulljava.lang.NullPointerException
- if enumeration is nullpublic static <E> java.util.Iterator<E> asIterator(java.util.Enumeration<? extends E> enumeration, java.util.Collection<? super E> removeCollection)
E
- the element typeenumeration
- the enumeration to use, may not be nullremoveCollection
- the collection to remove elements from, may not be nulljava.lang.NullPointerException
- if enumeration or removeCollection is nullpublic static <E> java.util.Enumeration<E> asEnumeration(java.util.Iterator<? extends E> iterator)
E
- the element typeiterator
- the iterator to use, may not be nulljava.lang.NullPointerException
- if iterator is nullpublic static <E> java.lang.Iterable<E> asIterable(java.util.Iterator<? extends E> iterator)
Iterable
that wraps an iterator. The returned Iterable
can be
used for a single iteration.E
- the element typeiterator
- the iterator to use, may not be nullIterable
java.lang.NullPointerException
- if iterator is nullpublic static <E> java.lang.Iterable<E> asMultipleUseIterable(java.util.Iterator<? extends E> iterator)
E
- the element typeiterator
- the iterator to use, may not be nulljava.lang.NullPointerException
- if iterator is nullpublic static <E> java.util.ListIterator<E> toListIterator(java.util.Iterator<? extends E> iterator)
As the wrapped Iterator is traversed, a LinkedList of its values is cached, permitting all required operations of ListIterator.
E
- the element typeiterator
- the iterator to use, may not be nulljava.lang.NullPointerException
- if iterator parameter is nullpublic static java.lang.Object[] toArray(java.util.Iterator<?> iterator)
As the wrapped Iterator is traversed, an ArrayList of its values is created. At the end, this is converted to an array.
iterator
- the iterator to use, not nulljava.lang.NullPointerException
- if iterator parameter is nullpublic static <E> E[] toArray(java.util.Iterator<? extends E> iterator, java.lang.Class<E> arrayClass)
As the wrapped Iterator is traversed, an ArrayList of its values is created. At the end, this is converted to an array.
E
- the element typeiterator
- the iterator to use, not nullarrayClass
- the class of array to createjava.lang.NullPointerException
- if iterator parameter or arrayClass is nulljava.lang.ArrayStoreException
- if the arrayClass is invalidpublic static <E> java.util.List<E> toList(java.util.Iterator<? extends E> iterator)
As the wrapped Iterator is traversed, an ArrayList of its values is created. At the end, the list is returned.
E
- the element typeiterator
- the iterator to use, not nulljava.lang.NullPointerException
- if iterator parameter is nullpublic static <E> java.util.List<E> toList(java.util.Iterator<? extends E> iterator, int estimatedSize)
As the wrapped Iterator is traversed, an ArrayList of its values is created. At the end, the list is returned.
E
- the element typeiterator
- the iterator to use, not nullestimatedSize
- the initial size of the ArrayListjava.lang.NullPointerException
- if iterator parameter is nulljava.lang.IllegalArgumentException
- if the size is less than 1public static java.util.Iterator<?> getIterator(java.lang.Object obj)
This method can handle objects as follows
obj
- the object to convert to an iteratorpublic static <E> void forEach(java.util.Iterator<E> iterator, Closure<? super E> closure)
E
- the element typeiterator
- the iterator to use, may be nullclosure
- the closure to apply to each element, may not be nulljava.lang.NullPointerException
- if closure is nullpublic static <E> E forEachButLast(java.util.Iterator<E> iterator, Closure<? super E> closure)
If the input iterator is null no change is made.
E
- the type of object the Iterator
containsiterator
- the iterator to get the input from, may be nullclosure
- the closure to perform, may not be nulljava.lang.NullPointerException
- if closure is nullpublic static <E> E find(java.util.Iterator<E> iterator, Predicate<? super E> predicate)
A null
or empty iterator returns null.
E
- the element typeiterator
- the iterator to search, may be nullpredicate
- the predicate to use, may not be nulljava.lang.NullPointerException
- if predicate is nullpublic static <E> int indexOf(java.util.Iterator<E> iterator, Predicate<? super E> predicate)
A null
or empty iterator returns -1.
E
- the element typeiterator
- the iterator to search, may be nullpredicate
- the predicate to use, may not be nulljava.lang.NullPointerException
- if predicate is nullpublic static <E> boolean matchesAny(java.util.Iterator<E> iterator, Predicate<? super E> predicate)
A null
or empty iterator returns false.
E
- the type of object the Iterator
containsiterator
- the Iterator
to use, may be nullpredicate
- the predicate to use, may not be nulljava.lang.NullPointerException
- if predicate is nullpublic static <E> boolean matchesAll(java.util.Iterator<E> iterator, Predicate<? super E> predicate)
A null
or empty iterator returns true.
E
- the type of object the Iterator
containsiterator
- the Iterator
to use, may be nullpredicate
- the predicate to use, may not be nulljava.lang.NullPointerException
- if predicate is nullpublic static boolean isEmpty(java.util.Iterator<?> iterator)
A null
or empty iterator returns true.
iterator
- the Iterator
to use, may be nullpublic static <E> boolean contains(java.util.Iterator<E> iterator, java.lang.Object object)
A null
or empty iterator returns false.
E
- the type of object the Iterator
containsiterator
- the iterator to check, may be nullobject
- the object to checkpublic static <E> E get(java.util.Iterator<E> iterator, int index)
index
-th value in Iterator
, throwing
IndexOutOfBoundsException
if there is no such element.
The Iterator is advanced to index
(or to the end, if
index
exceeds the number of entries) as a side effect of this method.
E
- the type of object in the Iterator
iterator
- the iterator to get a value fromindex
- the index to getjava.lang.IndexOutOfBoundsException
- if the index is invalidpublic static int size(java.util.Iterator<?> iterator)
A null
or empty iterator returns 0
.
iterator
- the iterator to check, may be nullpublic static <E> java.lang.String toString(java.util.Iterator<E> iterator)
The string representation consists of a list of the iterator'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 typeiterator
- the iterator to convert to a string, may be nulliterator
public static <E> java.lang.String toString(java.util.Iterator<E> iterator, Transformer<? super E,java.lang.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 typeiterator
- the iterator to convert to a string, may be nulltransformer
- the transformer used to get a string representation of an elementiterator
java.lang.NullPointerException
- if transformer
is nullpublic static <E> java.lang.String toString(java.util.Iterator<E> iterator, Transformer<? super E,java.lang.String> transformer, java.lang.String delimiter, java.lang.String prefix, java.lang.String suffix)
The string representation consists of a list of the iterator'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 typeiterator
- the iterator to convert to a string, may be nulltransformer
- the transformer used to get a string representation of an elementdelimiter
- the string to delimit elementsprefix
- the prefix, prepended to the string representationsuffix
- the suffix, appended to the string representationiterator
java.lang.NullPointerException
- if either transformer, delimiter, prefix or suffix is null"Copyright © 2010 - 2020 Adobe Systems Incorporated. All Rights Reserved"