You need to iterate over a portion of an ArrayList. For example, you have an ArrayList with 30 elements, and you need to
iterate from index 0 to index 20.
Use an ArrayListIterator
to iterate through a specified region of an ArrayList. This implementation of Iterator is constructed with a reference to an
ArrayList and two optional parameters
that specify the start and end of an iteration. This example
demonstrates the use of ArrayListIterator to iterate over the 3rd,
4th, and 5th elements of an ArrayList:
String[] strings = new String[] { "A", "B", "C", "D", "E", "F" };
List list = new ArrayList( Arrays.asList( strings ) );
Iterator iterator = new ArrayListIterator( list, 3, 6 );
while( iterator.hasNext( ) ) {
int index = iterator.nextIndex( );
String element = (String) iterator.next( );
System.out.println( "Element at " + index + ": " + element );
}ArrayListIterator also allows
you to obtain the index of an element during an iteration. In the
previous example, iterator.nextIndex() returns the index of the element returned by the
subsequent call to iterator.next( ). The
code above iterates through three elements of the ArrayList, producing the following
output:
Element at 3: D Element at 4: E Element at 5: F
You can construct an ArrayListIterator with up to three arguments.
The first argument is the ArrayList
to be iterated over. The second optional argument specifies the
inclusive start index, and the third optional argument specifies the
exclusive end index. If only two parameters are supplied to the
constructor, the ArrayListIterator
will iterate until the end of the ArrayList is reached. The following code
demonstrates the three constructors of ArrayListIterator:
String[] strings = new String[] { "A", "B", "C", "D", "E", "F" };
List list = new ArrayList( Arrays.asList( strings ) );
// Iterate over all elements
Iterator iterator1 = new ArrayListIterator( list );
// Iterate over "C", "D", "E", "F"
Iterator iterator2 = new ArrayListIterator( list, 2 );
// Iterate over "B", "C", "D"
Iterator iterator3 = new ArrayListIterator( list, 1, 4 );ArrayListIterator implements
the ResettableIterator interface,
which provides one function: reset(
). The reset() method takes
the iterator back to the beginning of an iteration. After a reset, a
call to next( ) returns the first
element that an ArrayListIterator has
been configured to return—the element at the index specified in the
constructor's optional second parameter. An ArrayListIterator also provides a way to set
the current element: the set( )
method takes an object parameter and changes the contents of the
underlying ArrayList. The following
example demonstrates both the reset(
) and set() methods on ArrayListIterator:
String[] strings = new String[] { "A", "B", "C", "D", "E", "F" };
List list = new ArrayList( Arrays.asList( strings ) );
System.out.println( "Original List: " + Arrays.toString( list.toArray( ) );
ResettableIterator iterator = new ArrayListIterator( list, 2 );
// Retrieve an Element from the List
int index = iterator.nextIndex( );
String element = (String) iterator.next( );
System.out.println( "Element at " + index + ": " + element );
// Set the Current Element
iterator.set( "G" );
System.out.println( "Modifying index: " + index + " to G");
// Retrieve the Next Element from the List
index = iterator.nextIndex( );
element = (String) iterator.next( );
System.out.println( "Element at " + index + ": " + element );
// Set the Current Element
iterator.set( "H" );
System.out.println( "Modifying index: " + index + " to H");
// Reset the Iterator (Go to beginning of iteration)
iterator.reset( );
System.out.println( "Reset" );
index = iterator.nextIndex( );
element = (String) iterator.next( );
System.out.println( "Element at " + index + ": " + element );
System.out.println( "Modified List: " + Arrays.toString( list.toArray( ) );This example iterates through the ArrayList, modifying two elements before
calling reset( ). The following
output shows that after a reset( ),
the first element returns the value, which was supplied to set( ):
Original List: {A,B,C,D,E,F}
Element at 2: C
Modifying index: 2 to G
Element at 3: D
Modifying index: 3 to H
Reset
Element at 2: G
Modified List: {A,B,G,H,E,F}If you need to iterate over an array or an object array, use two
related implementations of Iterator:
ArrayIterator and ObjectArrayIterator. See the Commons
Collections project page at http://commons.apache.org/collections
for more information about these Iterator implementations.
