Is it advisable not to use iterator.hasNext() in looping over an iterator?
For example I would like to set value obj to each element of a list. I could use the following code or make it more readable by using hasNext() in a loop.
int size = list.size();
ListIterator<? super T> itr = list.listIterator();
for (int i=0; i<size; i++) {
itr.next();
itr.set(obj);
}
Instead of these lines I could write my code like the following.
for (ListIterator<? super T> itr = list.listIterator(); itr.hasNext(); ) {
itr.next();
itr.set(obj);
}
Um, no.
hasNextis the standard way you iterate with an iterator. That’s what the enhanced-for statement does behind the scenes for an iterable, for example.Having said that, your code is already ListIterator-specific, as you’re using
ListIterator.set– so your second block of code won’t actually compile at the moment. Even if it did, it wouldn’t work, as you still need to callnext(). This would work though: