Java : ListIterator with Examples

ListIterator (Java SE 21 & JDK 21) with Examples.
You will find code examples on most ListIterator<E> methods.


Summary

An iterator for lists that allows the programmer to traverse the list in either direction, modify the list during iteration, and obtain the iterator's current position in the list.

Class diagram

final var list = List.of("aaa", "bbb", "ccc");
System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();

System.out.println("-- next --");
while (iterator.hasNext()) {
    final var value = iterator.next();
    System.out.println(value);
}

// Result
// ↓
//-- next --
//aaa
//bbb
//ccc

System.out.println("-- previous --");
while (iterator.hasPrevious()) {
    final var value = iterator.previous();
    System.out.println(value);
}

// Result
// ↓
//-- previous --
//ccc
//bbb
//aaa

Methods

void add (E e)

Inserts the specified element into the list (optional operation).

final var list = new ArrayList<String>();
Collections.addAll(list, "aaa", "bbb", "ccc");

System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();
while (iterator.hasNext()) {
    final var value = iterator.next();
    iterator.add(value.toUpperCase());
}

System.out.println(list); // [aaa, AAA, bbb, BBB, ccc, CCC]

boolean hasNext ()

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

final var list = List.of("aaa", "bbb", "ccc");
System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();

System.out.println("-- next --");
while (iterator.hasNext()) {
    final var index = iterator.nextIndex();
    final var value = iterator.next();
    System.out.printf("index = %d, value = %s%n", index, value);
}

// Result
// ↓
//-- next --
//index = 0, value = aaa
//index = 1, value = bbb
//index = 2, value = ccc

boolean hasPrevious ()

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

final var list = List.of("aaa", "bbb", "ccc");
System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator(list.size());

System.out.println("-- previous --");
while (iterator.hasPrevious()) {
    final var index = iterator.previousIndex();
    final var value = iterator.previous();
    System.out.printf("index = %d, value = %s%n", index, value);
}

// Result
// ↓
//-- previous --
//index = 2, value = ccc
//index = 1, value = bbb
//index = 0, value = aaa

E next ()

Returns the next element in the list and advances the cursor position.

Please see hasNext().

int nextIndex ()

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

Please see hasNext().

E previous ()

Returns the previous element in the list and moves the cursor position backwards.

Please see hasPrevious().

int previousIndex ()

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

Please see hasPrevious().

void remove ()

Removes from the list the last element that was returned by next() or previous() (optional operation).

final var list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6);

System.out.println(list); // [1, 2, 3, 4, 5, 6]

final var iterator = list.listIterator();
while (iterator.hasNext()) {
    final var value = iterator.next();
    if (value % 2 == 0) {
        iterator.remove();
    }
}

System.out.println(list); // [1, 3, 5]

void set (E e)

Replaces the last element returned by next() or previous() with the specified element (optional operation).

final var list = new ArrayList<String>();
Collections.addAll(list, "aaa", "bbb", "ccc");

System.out.println(list); // [aaa, bbb, ccc]

final var iterator = list.listIterator();
while (iterator.hasNext()) {
    final var value = iterator.next();
    iterator.set(value.toUpperCase());
}

System.out.println(list); // [AAA, BBB, CCC]

Methods declared in Iterator

forEachRemaining

Please see the link below.


Related posts

To top of page