NAME

Data::ArrayList::ListIterator - iterator for Data::ArrayList

VERSION

version 0.01

SYNOPSIS

use Data::ArrayList;

my $dal = Data::ArrayList->new();

$dal->addAll( 1 .. 100 );

my $iter = $dal->listIterator();

while ( $iter->hasNext ) {
    my $idx = $iter->nextIndex;
    my $elem = $iter->next;

    $iter->add( "$elem from $idx again" );
}

while ( $iter->hasPrevious ) {
    my $idx = $iter->previousIndex;

    my $elem = $iter->previous;

    $iter->remove if $elem =~ / again$/;
}

DESCRIPTION

Data::ArrayList::ListIterator provides iterator for Data::ArrayList.

METHODS

hasNext

while ( $it->hasNext() ) {
    say $it->next;
}

Returns true if this list iterator has more elements when traversing the list in the forward direction.

hasPrevious

while ( $it->hasPrevious() ) {
    say $it->previous;
}

Returns true if this list iterator has more elements when traversing the list in the reverse direction.

nextIndex

while ( $it->hasNext() ) {
    my $index = $it->nextIndex();

    $dal->get($index) == $it->next;
}

Returns the index of the element that would be returned by a subsequent call to "next".

Returns list size if the list iterator is at the end of the list.

previousIndex

while ( $it->hasPrevious() ) {
    my $index = $it->previousIndex();

    $dal->get($index) == $it->previous;
}

Returns the index of the element that would be returned by a subsequent call to "previous".

Returns -1 if the list iterator is at the beginning of the list.

next

while ( $it->hasNext() ) {
    say $it->next;
}

Returns the next element in the list. This method may be called repeatedly to iterate through the list, or intermixed with calls to "previous" to go back and forth.

Note: alternating calls to "next" and "previous" will return the same element repeatedly.

previous

while ( $it->hasPrevious() ) {
    say $it->previous;
}

Returns the previous element in the list. This method may be called repeatedly to iterate through the list, or intermixed with calls to "next" to go back and forth.

Note: alternating calls to "next" and "previous" will return the same element repeatedly.

remove

while ( $it->hasNext() ) {
    say $it->next;

    $it->remove;
}

Removes from the list the last element that was returned by "next" or "previous".

This call can only be made once per call to "next" or "previous". It can be made only if "add" has not been called after the last call to "next" or "previous".

set

while ( $it->hasNext() ) {
    $it->set( encrypt($it->next) );
}

Replaces the last element returned by "next" or "previous" with the specified element.

This call can be made only if neither "remove" nor "add" have been called after the last call to "next" or "previous".

add

while ( $it->hasNext() ) {
    $it->add( $it->next ); # duplicate all elements
}

Inserts the specified element into the list. The element is inserted immediately before the next element that would be returned by "next", if any, and after the next element that would be returned by "previous", if any.

If the list contains no elements, the new element becomes the sole element on the list.

The new element is inserted before the implicit cursor: a subsequent call to "next" would be unaffected, and a subsequent call to "previous" would return the new element.

This call increases by one the value that would be returned by a call to "nextIndex" or "previousIndex".

SEE ALSO

AUTHOR

Alex J. G. Burzyński <ajgb@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2010 by Alex J. G. Burzyński <ajgb@cpan.org>.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.