ListIterator can iterate in the both directions of a Collection. It
maintains two pointer for previous and next element. In ListIterator
we can use add() method to add an element into the list immediately
before the element returned by next() method.
So a subsequent call to next() method will not be affected. And the
call to previous() method will return the newly added element.
In Iterator we can only traverse in one direction. So there is no
purpose of add() method there
https://fayllar.org/how-remove-method-is-implemented-in-a-hashmap.html?page=8