beginnersbook.com

  • Home
  • All Tutorials
    • Learn Servlet
    • Learn JSP
    • Learn JSTL
    • Learn C
    • Learn C++
    • Learn MongoDB
    • Learn XML
    • Learn Python
    • Learn Perl
    • Learn Kotlin
  • Core Java
  • OOPs
  • Collections
  • Java I/O
  • JSON
  • DBMS

Difference between Iterator and ListIterator in java

By Chaitanya Singh | Filed Under: Java Collections

Here we will discuss the differences between Iterator and ListIterator. Both of these interfaces are used for traversing but still there are few differences in the way they can be used for traversing a collection. I would recommend you to go through the following tutorials to understand these interfaces better before going through the differences.

Java – Iterator
Java – ListIterator

Iterator vs ListIterator

1) Iterator is used for traversing List and Set both.

We can use ListIterator to traverse List only, we cannot traverse Set using ListIterator.

2) We can traverse in only forward direction using Iterator.

Using ListIterator, we can traverse a List in both the directions (forward and Backward).

3) We cannot obtain indexes while using Iterator

We can obtain indexes at any point of time while traversing a list using ListIterator. The methods nextIndex() and previousIndex() are used for this purpose.

4) We cannot add element to collection while traversing it using Iterator, it throws ConcurrentModificationException when you try to do it.

We can add element at any point of time while traversing a list using ListIterator.

5) We cannot replace the existing element value when using Iterator.

By using set(E e) method of ListIterator we can replace the last element returned by next() or previous() methods.

6) Methods of Iterator:

  • hasNext()
  • next()
  • remove()

Methods of ListIterator:

  • add(E e)
  • hasNext()
  • hasPrevious()
  • next()
  • nextIndex()
  • previous()
  • previousIndex()
  • remove()
  • set(E e)

References:

Iterator javadoc
ListIterator javadoc

Enjoyed this post? Try these related posts

  1. Java ArrayList indexOf() Method example
  2. Java – Add element at specific index in LinkedList example
  3. PriorityQueue Interface in Java Collections
  4. Difference between List and Set in Java
  5. How to convert an array to ArrayList in java
  6. Search elements in Vector using index – Java example

Comments

  1. Ajit says

    February 23, 2017 at 8:37 AM

    This article helped me. Nice and simple. To the point. I really appreciate that you shared this info :)

    Reply
  2. Nikhil Sane says

    March 21, 2017 at 9:47 AM

    Hi Chaitanya,

    Your Statement “We can add element at any point of time while traversing a list using ListIterator”.

    I have tried to add element to List while traversing the list using List Iterator. It is gave me below error.

    Error: Exception in thread “main” java.util.ConcurrentModificationException
    at java.util.ArrayList$Itr.checkForComodification(Unknown Source)
    at java.util.ArrayList$Itr.next(Unknown Source)
    at ArrayListExample.main(ArrayListExample.java:19)

    Reply
    • mani kumar says

      June 16, 2017 at 1:45 PM

      you have to use concurrenthashmap in case of maps and CopyOnWriteArrayList in case of list to avoid that exception

      Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Java Tutorial

  • Java Tutorial
  • OOPs Concepts

Java Collections

  • ArrayList
  • LinkedList
  • ArrayList vs LinkedList
  • Vector
  • ArrayList vs Vector
  • HashMap
  • TreeMap
  • LinkedHashMap
  • HashSet
  • TreeSet
  • LinkedHashSet
  • Hashtable
  • HashMap vs Hashtable
  • Queue
  • PriorityQueue
  • Deque & ArrayDeque
  • Iterator
  • ListIterator
  • Comparable Interface
  • Comparator Interface
  • Java Collections Interview Q

MORE ...

  • Java String
  • Exception handling
  • Java Multithreading
  • Java I/O
  • Java Serialization
  • Java Regex
  • Java AWT
  • Java Swing
  • Java Enum
  • Java Annotations

Copyright © 2012 – 2021 BeginnersBook . Privacy Policy . Sitemap