Tuesday, June 17, 2014

What is Iterator and ListIterator



public interface Iterator<E> {
    E next();
    void remove();
}
JDK8 Iterator interfaces add default implementation for remove method and add another method: forEachRemaining with default method.
public interface Enumeration<E> {
    boolean hasMoreElements();
    E nextElement();
}
Why use Iterator when we have Enumerator:
Both Iterator and Enumerator is used for traversing of collection but Iterator is more enhanced in terms of extra method remove () it provide us for modify the collection which is not available in enumeration
What is List Iterator in Java?
interface ListIterator<E> extends Iterator<E>
{
  boolean hasNext();
  E next();
  boolean hasPrevious();
  E previous();
  int nextIndex();
  int previousIndex();
  void remove();
  void set(E paramE);
  void add(E paramE);
}
ListIterator in Java is an Iterator which allows user to traverse Collection like ArrayList and HashSet in both direction by using method previous() and next ().
2) If you want to remove objects from Collection than don't use for-each loop instead use Iterator's remove() method to avoid any ConcurrentModificationException.
3) Iterating over collection using Iterator is subject to ConcurrentModificationException if Collection is modified after Iteration started, but this only happens in case of fail-fast Iterators.
4) There are two types of Iterators in Java, fail-fast and fail-safe.
5) List collection type also supports ListIterator which has add() method to add elements in collection while Iterating.
http://beginnersbook.com/2014/06/listiterator-in-java-with-examples/
5) int nextIndex(): Returns the index of the element that would be returned by a subsequent call to next().
6) E previous(): Returns the previous element in the list and moves the cursor position backwards.
7) int previousIndex(): Returns the index of the element that would be returned by a subsequent call to previous().
9) void set(E e): Replaces the last element returned by next() or previous() with the specified element (optional operation).
1) void add(E e): Inserts the specified element into the list (optional operation).
http://www.java2s.com/Tutorial/Java/0140__Collections/ListIteratorInreverseorder.htm
    List list = new LinkedList();
    list.add("A");
    list.add("B");
    list.add("C");
    list.add("D");

    ListIterator iter = list.listIterator(list.size());

    while (iter.hasPrevious()) {
      System.out.println(iter.previous());
    }
D
C
B
A
While Iterator only supports remove(), ListIterator adds set() and add() methods.
Using the nextIndex() and previousIndex() methods allows you to find out the index of the elements around the current cursor position:
public int nextIndex()
public int previousIndex()


Read full article from What is Iterator and ListIterator in Java Program with Example - Tutorial Code Sample

Labels

Review (572) System Design (334) System Design - Review (198) Java (189) Coding (75) Interview-System Design (65) Interview (63) Book Notes (59) Coding - Review (59) to-do (45) Linux (43) Knowledge (39) Interview-Java (35) Knowledge - Review (32) Database (31) Design Patterns (31) Big Data (29) Product Architecture (28) MultiThread (27) Soft Skills (27) Concurrency (26) Cracking Code Interview (26) Miscs (25) Distributed (24) OOD Design (24) Google (23) Career (22) Interview - Review (21) Java - Code (21) Operating System (21) Interview Q&A (20) System Design - Practice (20) Tips (19) Algorithm (17) Company - Facebook (17) Security (17) How to Ace Interview (16) Brain Teaser (14) Linux - Shell (14) Redis (14) Testing (14) Tools (14) Code Quality (13) Search (13) Spark (13) Spring (13) Company - LinkedIn (12) How to (12) Interview-Database (12) Interview-Operating System (12) Solr (12) Architecture Principles (11) Resource (10) Amazon (9) Cache (9) Git (9) Interview - MultiThread (9) Scalability (9) Trouble Shooting (9) Web Dev (9) Architecture Model (8) Better Programmer (8) Cassandra (8) Company - Uber (8) Java67 (8) Math (8) OO Design principles (8) SOLID (8) Design (7) Interview Corner (7) JVM (7) Java Basics (7) Kafka (7) Mac (7) Machine Learning (7) NoSQL (7) C++ (6) Chrome (6) File System (6) Highscalability (6) How to Better (6) Network (6) Restful (6) CareerCup (5) Code Review (5) Hash (5) How to Interview (5) JDK Source Code (5) JavaScript (5) Leetcode (5) Must Known (5) Python (5)

Popular Posts