| java.lang.Object org.apache.commons.collections.IteratorUtils
IteratorUtils | public class IteratorUtils (Code) | | Provides static utility methods and decorators for
Iterator
instances. The implementations are provided in the iterators subpackage.
WARNING: Due to human error certain binary incompatabilities were introduced
between Commons Collections 2.1 and 3.0. The class remained source and test
compatible, so if you can recompile all your classes and dependencies
everything is OK. Those methods which are binary incompatible are marked as
such, together with alternate solutions that are binary compatible
against versions 2.1.1 and 3.1.
since: Commons Collections 2.1 version: $Revision: 405920 $ $Date: 2006-05-12 23:48:04 +0100 (Fri, 12 May 2006) $ author: Stephen Colebourne author: Phil Steitz |
Constructor Summary | |
public | IteratorUtils() IteratorUtils is not normally instantiated. |
Method Summary | |
public static ResettableIterator | arrayIterator(Object[] array) Gets an iterator over an object array. | public static ResettableIterator | arrayIterator(Object array) Gets an iterator over an object or primitive array. | public static ResettableIterator | arrayIterator(Object[] array, int start) Gets an iterator over the end part of an object array. | public static ResettableIterator | arrayIterator(Object array, int start) Gets an iterator over the end part of an object or primitive array. | public static ResettableIterator | arrayIterator(Object[] array, int start, int end) Gets an iterator over part of an object array. | public static ResettableIterator | arrayIterator(Object array, int start, int end) Gets an iterator over part of an object or primitive array. | public static ResettableListIterator | arrayListIterator(Object[] array) Gets a list iterator over an object array. | public static ResettableListIterator | arrayListIterator(Object array) Gets a list iterator over an object or primitive array. | public static ResettableListIterator | arrayListIterator(Object[] array, int start) Gets a list iterator over the end part of an object array. | public static ResettableListIterator | arrayListIterator(Object array, int start) Gets a list iterator over the end part of an object or primitive array. | public static ResettableListIterator | arrayListIterator(Object[] array, int start, int end) Gets a list iterator over part of an object array. | public static ResettableListIterator | arrayListIterator(Object array, int start, int end) Gets a list iterator over part of an object or primitive array. | public static Enumeration | asEnumeration(Iterator iterator) Gets an enumeration that wraps an iterator. | public static Iterator | asIterator(Enumeration enumeration) Gets an iterator that provides an iterator view of the given enumeration. | public static Iterator | asIterator(Enumeration enumeration, Collection removeCollection) Gets an iterator that provides an iterator view of the given enumeration
that will remove elements from the specified collection. | public static Iterator | chainedIterator(Iterator iterator1, Iterator iterator2) Gets an iterator that iterates through two
Iterator s
one after another. | public static Iterator | chainedIterator(Iterator[] iterators) Gets an iterator that iterates through an array of
Iterator s
one after another. | public static Iterator | chainedIterator(Collection iterators) Gets an iterator that iterates through a collections of
Iterator s
one after another. | public static Iterator | collatedIterator(Comparator comparator, Iterator iterator1, Iterator iterator2) Gets an iterator that provides an ordered iteration over the elements
contained in a collection of ordered
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. | public static Iterator | collatedIterator(Comparator comparator, Iterator[] iterators) Gets an iterator that provides an ordered iteration over the elements
contained in an array of
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. | public static Iterator | collatedIterator(Comparator comparator, Collection iterators) Gets an iterator that provides an ordered iteration over the elements
contained in a collection of
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. | public static ResettableIterator | emptyIterator() Gets an empty iterator. | public static ResettableListIterator | emptyListIterator() Gets an empty list iterator. | public static MapIterator | emptyMapIterator() Gets an empty map iterator. | public static OrderedIterator | emptyOrderedIterator() Gets an empty ordered iterator. | public static OrderedMapIterator | emptyOrderedMapIterator() Gets an empty ordered map iterator. | public static Iterator | filteredIterator(Iterator iterator, Predicate predicate) Gets an iterator that filters another iterator. | public static ListIterator | filteredListIterator(ListIterator listIterator, Predicate predicate) Gets a list iterator that filters another list iterator. | public static Iterator | getIterator(Object obj) Gets a suitable Iterator for the given object. | public static ResettableIterator | loopingIterator(Collection coll) Gets an iterator that loops continuously over the supplied collection. | public static ResettableListIterator | loopingListIterator(List list) Gets an iterator that loops continuously over the supplied list. | public static Iterator | objectGraphIterator(Object root, Transformer transformer) Gets an iterator that operates over an object graph.
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 -- Leaf
The 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. | public static ResettableIterator | singletonIterator(Object object) Gets a singleton iterator. | public static ListIterator | singletonListIterator(Object object) Gets a singleton list iterator. | public static Object[] | toArray(Iterator iterator) Gets an array based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. | public static Object[] | toArray(Iterator iterator, Class arrayClass) Gets an array based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. | public static List | toList(Iterator iterator) Gets a list based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. | public static List | toList(Iterator iterator, int estimatedSize) Gets a list based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. | public static ListIterator | toListIterator(Iterator iterator) Gets a list iterator based on a simple iterator. | public static Iterator | transformedIterator(Iterator iterator, Transformer transform) Gets an iterator that transforms the elements of another iterator. | public static Iterator | unmodifiableIterator(Iterator iterator) Gets an immutable version of an
Iterator . | public static ListIterator | unmodifiableListIterator(ListIterator listIterator) Gets an immutable version of a
ListIterator . | public static MapIterator | unmodifiableMapIterator(MapIterator mapIterator) Gets an immutable version of a
MapIterator . |
EMPTY_ITERATOR | final public static ResettableIterator EMPTY_ITERATOR(Code) | | An iterator over no elements.
WARNING: This constant is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use EmptyIterator.INSTANCE for compatability with Commons Collections 2.1.1.
|
EMPTY_LIST_ITERATOR | final public static ResettableListIterator EMPTY_LIST_ITERATOR(Code) | | A list iterator over no elements.
WARNING: This constant is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use EmptyListIterator.INSTANCE for compatability with Commons Collections 2.1.1.
|
EMPTY_MAP_ITERATOR | final public static MapIterator EMPTY_MAP_ITERATOR(Code) | | A map iterator over no elements.
|
EMPTY_ORDERED_ITERATOR | final public static OrderedIterator EMPTY_ORDERED_ITERATOR(Code) | | An ordered iterator over no elements.
|
EMPTY_ORDERED_MAP_ITERATOR | final public static OrderedMapIterator EMPTY_ORDERED_MAP_ITERATOR(Code) | | An ordered map iterator over no elements.
|
IteratorUtils | public IteratorUtils()(Code) | | IteratorUtils is not normally instantiated.
|
arrayIterator | public static ResettableIterator arrayIterator(Object[] array)(Code) | | Gets an iterator over an object array.
WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use new ArrayIterator(array) for compatability.
Parameters: array - the array over which to iterate an iterator over the array throws: NullPointerException - if array is null |
arrayIterator | public static ResettableIterator arrayIterator(Object array)(Code) | | Gets an iterator over an object or primitive array.
This method will handle primitive arrays as well as object arrays.
The primitives will be wrapped in the appropriate wrapper class.
Parameters: array - the array over which to iterate an iterator over the array throws: IllegalArgumentException - if the array is not an array throws: NullPointerException - if array is null |
arrayIterator | public static ResettableIterator arrayIterator(Object[] array, int start)(Code) | | Gets an iterator over the end part of an object array.
WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use new ArrayIterator(array,start) for compatability.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at an iterator over part of the array throws: IndexOutOfBoundsException - if start is less than zero or greaterthan the length of the array throws: NullPointerException - if array is null |
arrayIterator | public static ResettableIterator arrayIterator(Object array, int start)(Code) | | Gets an iterator over the end part of an object or primitive array.
This method will handle primitive arrays as well as object arrays.
The primitives will be wrapped in the appropriate wrapper class.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at an iterator over part of the array throws: IllegalArgumentException - if the array is not an array throws: IndexOutOfBoundsException - if start is less than zero or greaterthan the length of the array throws: NullPointerException - if array is null |
arrayIterator | public static ResettableIterator arrayIterator(Object[] array, int start, int end)(Code) | | Gets an iterator over part of an object array.
WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use new ArrayIterator(array,start,end) for compatability.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at Parameters: end - the index to finish iterating at an iterator over part of the array throws: IndexOutOfBoundsException - if array bounds are invalid throws: IllegalArgumentException - if end is before start throws: NullPointerException - if array is null |
arrayIterator | public static ResettableIterator arrayIterator(Object array, int start, int end)(Code) | | Gets an iterator over part of an object or primitive array.
This method will handle primitive arrays as well as object arrays.
The primitives will be wrapped in the appropriate wrapper class.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at Parameters: end - the index to finish iterating at an iterator over part of the array throws: IllegalArgumentException - if the array is not an array throws: IndexOutOfBoundsException - if array bounds are invalid throws: IllegalArgumentException - if end is before start throws: NullPointerException - if array is null |
arrayListIterator | public static ResettableListIterator arrayListIterator(Object array)(Code) | | Gets a list iterator over an object or primitive array.
This method will handle primitive arrays as well as object arrays.
The primitives will be wrapped in the appropriate wrapper class.
Parameters: array - the array over which to iterate a list iterator over the array throws: IllegalArgumentException - if the array is not an array throws: NullPointerException - if array is null |
arrayListIterator | public static ResettableListIterator arrayListIterator(Object[] array, int start)(Code) | | Gets a list iterator over the end part of an object array.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at a list iterator over part of the array throws: IndexOutOfBoundsException - if start is less than zero throws: NullPointerException - if array is null |
arrayListIterator | public static ResettableListIterator arrayListIterator(Object array, int start)(Code) | | Gets a list iterator over the end part of an object or primitive array.
This method will handle primitive arrays as well as object arrays.
The primitives will be wrapped in the appropriate wrapper class.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at a list iterator over part of the array throws: IllegalArgumentException - if the array is not an array throws: IndexOutOfBoundsException - if start is less than zero throws: NullPointerException - if array is null |
arrayListIterator | public static ResettableListIterator arrayListIterator(Object[] array, int start, int end)(Code) | | Gets a list iterator over part of an object array.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at Parameters: end - the index to finish iterating at a list iterator over part of the array throws: IndexOutOfBoundsException - if array bounds are invalid throws: IllegalArgumentException - if end is before start throws: NullPointerException - if array is null |
arrayListIterator | public static ResettableListIterator arrayListIterator(Object array, int start, int end)(Code) | | Gets a list iterator over part of an object or primitive array.
This method will handle primitive arrays as well as object arrays.
The primitives will be wrapped in the appropriate wrapper class.
Parameters: array - the array over which to iterate Parameters: start - the index to start iterating at Parameters: end - the index to finish iterating at a list iterator over part of the array throws: IllegalArgumentException - if the array is not an array throws: IndexOutOfBoundsException - if array bounds are invalid throws: IllegalArgumentException - if end is before start throws: NullPointerException - if array is null |
asEnumeration | public static Enumeration asEnumeration(Iterator iterator)(Code) | | Gets an enumeration that wraps an iterator.
Parameters: iterator - the iterator to use, not null a new enumeration throws: NullPointerException - if iterator is null |
asIterator | public static Iterator asIterator(Enumeration enumeration)(Code) | | Gets an iterator that provides an iterator view of the given enumeration.
Parameters: enumeration - the enumeration to use a new iterator |
asIterator | public static Iterator asIterator(Enumeration enumeration, Collection removeCollection)(Code) | | Gets an iterator that provides an iterator view of the given enumeration
that will remove elements from the specified collection.
Parameters: enumeration - the enumeration to use Parameters: removeCollection - the collection to remove elements from a new iterator |
chainedIterator | public static Iterator chainedIterator(Iterator iterator1, Iterator iterator2)(Code) | | Gets an iterator that iterates through two
Iterator s
one after another.
Parameters: iterator1 - the first iterators to use, not null Parameters: iterator2 - the first iterators to use, not null a combination iterator over the iterators throws: NullPointerException - if either iterator is null |
chainedIterator | public static Iterator chainedIterator(Iterator[] iterators)(Code) | | Gets an iterator that iterates through an array of
Iterator s
one after another.
Parameters: iterators - the iterators to use, not null or empty or contain nulls a combination iterator over the iterators throws: NullPointerException - if iterators array is null or contains a null |
chainedIterator | public static Iterator chainedIterator(Collection iterators)(Code) | | Gets an iterator that iterates through a collections of
Iterator s
one after another.
Parameters: iterators - the iterators to use, not null or empty or contain nulls a combination iterator over the iterators throws: NullPointerException - if iterators collection is null or contains a null throws: ClassCastException - if the iterators collection contains the wrong object type |
collatedIterator | public static Iterator collatedIterator(Comparator comparator, Iterator iterator1, Iterator iterator2)(Code) | | Gets an iterator that provides an ordered iteration over the elements
contained in a collection of ordered
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.
Parameters: comparator - the comparator to use, may be null for natural order Parameters: iterator1 - the first iterators to use, not null Parameters: iterator2 - the first iterators to use, not null a combination iterator over the iterators throws: NullPointerException - if either iterator is null |
collatedIterator | public static Iterator collatedIterator(Comparator comparator, Iterator[] iterators)(Code) | | Gets an iterator that provides an ordered iteration over the elements
contained in an array of
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.
Parameters: comparator - the comparator to use, may be null for natural order Parameters: iterators - the iterators to use, not null or empty or contain nulls a combination iterator over the iterators throws: NullPointerException - if iterators array is null or contains a null |
collatedIterator | public static Iterator collatedIterator(Comparator comparator, Collection iterators)(Code) | | Gets an iterator that provides an ordered iteration over the elements
contained in a collection of
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.
Parameters: comparator - the comparator to use, may be null for natural order Parameters: iterators - the iterators to use, not null or empty or contain nulls a combination iterator over the iterators throws: NullPointerException - if iterators collection is null or contains a null throws: ClassCastException - if the iterators collection contains the wrong object type |
emptyIterator | public static ResettableIterator emptyIterator()(Code) | | Gets an empty iterator.
This iterator is a valid iterator object that will iterate over
nothing.
WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use EmptyIterator.INSTANCE for compatability with Commons Collections 2.1.1.
an iterator over nothing |
emptyListIterator | public static ResettableListIterator emptyListIterator()(Code) | | Gets an empty list iterator.
This iterator is a valid list iterator object that will iterate
over nothing.
WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use EmptyListIterator.INSTANCE for compatability with Commons Collections 2.1.1.
a list iterator over nothing |
emptyMapIterator | public static MapIterator emptyMapIterator()(Code) | | Gets an empty map iterator.
This iterator is a valid map iterator object that will iterate
over nothing.
a map iterator over nothing |
emptyOrderedIterator | public static OrderedIterator emptyOrderedIterator()(Code) | | Gets an empty ordered iterator.
This iterator is a valid iterator object that will iterate
over nothing.
an ordered iterator over nothing |
emptyOrderedMapIterator | public static OrderedMapIterator emptyOrderedMapIterator()(Code) | | Gets an empty ordered map iterator.
This iterator is a valid map iterator object that will iterate
over nothing.
a map iterator over nothing |
filteredIterator | public static Iterator filteredIterator(Iterator iterator, Predicate predicate)(Code) | | Gets an iterator that filters another iterator.
The returned iterator will only return objects that match the specified
filtering predicate.
Parameters: iterator - the iterator to use, not null Parameters: predicate - the predicate to use as a filter, not null a new filtered iterator throws: NullPointerException - if either parameter is null |
filteredListIterator | public static ListIterator filteredListIterator(ListIterator listIterator, Predicate predicate)(Code) | | Gets a list iterator that filters another list iterator.
The returned iterator will only return objects that match the specified
filtering predicate.
Parameters: listIterator - the list iterator to use, not null Parameters: predicate - the predicate to use as a filter, not null a new filtered iterator throws: NullPointerException - if either parameter is null |
getIterator | public static Iterator getIterator(Object obj)(Code) | | Gets a suitable Iterator for the given object.
This method can handles objects as follows
- null - empty iterator
- Iterator - returned directly
- Enumeration - wrapped
- Collection - iterator from collection returned
- Map - values iterator returned
- Dictionary - values (elements) enumeration returned as iterator
- array - iterator over array returned
- object with iterator() public method accessed by reflection
- object - singleton iterator
Parameters: obj - the object to convert to an iterator a suitable iterator, never null |
loopingIterator | public static ResettableIterator loopingIterator(Collection coll)(Code) | | Gets an iterator that loops continuously over the supplied collection.
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.
Parameters: coll - the collection to iterate over, not null a new looping iterator throws: NullPointerException - if the collection is null |
loopingListIterator | public static ResettableListIterator loopingListIterator(List list)(Code) | | Gets an iterator that loops continuously over the supplied 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.
Parameters: list - the list to iterate over, not null a new looping iterator throws: NullPointerException - if the list is null since: Commons Collections 3.2 |
objectGraphIterator | public static Iterator objectGraphIterator(Object root, Transformer transformer)(Code) | | Gets an iterator that operates over an object graph.
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 -- Leaf
The 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.
Parameters: root - the root object to start iterating from, null results in an empty iterator Parameters: transformer - the transformer to use, see above, null uses no effect transformer a new object graph iterator since: Commons Collections 3.1 |
singletonIterator | public static ResettableIterator singletonIterator(Object object)(Code) | | Gets a singleton iterator.
This iterator is a valid iterator object that will iterate over
the specified object.
WARNING: This method is binary incompatible with Commons Collections 2.1 and 2.1.1.
Use new SingletonIterator(object) for compatability.
Parameters: object - the single object over which to iterate a singleton iterator over the object |
singletonListIterator | public static ListIterator singletonListIterator(Object object)(Code) | | Gets a singleton list iterator.
This iterator is a valid list iterator object that will iterate over
the specified object.
Parameters: object - the single object over which to iterate a singleton list iterator over the object |
toArray | public static Object[] toArray(Iterator iterator)(Code) | | Gets an array based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. At the end, this is converted to an array.
Parameters: iterator - the iterator to use, not null an array of the iterator contents throws: NullPointerException - if iterator parameter is null |
toArray | public static Object[] toArray(Iterator iterator, Class arrayClass)(Code) | | Gets an array based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. At the end, this is converted to an array.
Parameters: iterator - the iterator to use, not null Parameters: arrayClass - the class of array to create an array of the iterator contents throws: NullPointerException - if iterator parameter is null throws: NullPointerException - if arrayClass is null throws: ClassCastException - if the arrayClass is invalid |
toList | public static List toList(Iterator iterator)(Code) | | Gets a list based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. At the end, the list is returned.
Parameters: iterator - the iterator to use, not null a list of the iterator contents throws: NullPointerException - if iterator parameter is null |
toList | public static List toList(Iterator iterator, int estimatedSize)(Code) | | Gets a list based on an iterator.
As the wrapped Iterator is traversed, an ArrayList of its values is
created. At the end, the list is returned.
Parameters: iterator - the iterator to use, not null Parameters: estimatedSize - the initial size of the ArrayList a list of the iterator contents throws: NullPointerException - if iterator parameter is null throws: IllegalArgumentException - if the size is less than 1 |
toListIterator | public static ListIterator toListIterator(Iterator iterator)(Code) | | Gets a list iterator based on a simple iterator.
As the wrapped Iterator is traversed, a LinkedList of its values is
cached, permitting all required operations of ListIterator.
Parameters: iterator - the iterator to use, not null a new iterator throws: NullPointerException - if iterator parameter is null |
transformedIterator | public static Iterator transformedIterator(Iterator iterator, Transformer transform)(Code) | | Gets an iterator that transforms the elements of another iterator.
The transformation occurs during the next() method and the underlying
iterator is unaffected by the transformation.
Parameters: iterator - the iterator to use, not null Parameters: transform - the transform to use, not null a new transforming iterator throws: NullPointerException - if either parameter is null |
|
|