In order to move to next element in Iterator you call next().
This updates special cursor variable to refer to index after index of element returned by next().
After you called next() on index say 5 subsequent call of nextIndex() returns 6.
This line initializes ListIterator with index returned by i.nextIndex() :
This means that two ListIterators i and j currently point to the same index returned by i.nextIndex().
In your case ListIterators i and j are created from the same collection and after the above line in [code] you have both i and j pointing by the same index to the same element.
You will never ask such question if you look at source code of ListIterator of collection you are using.
Finally I recommend you to investigate
Java collections profoundly in my
tutorials.