I want to iterate through a NodeList
using a for-each loop in Java. I have it working with a for loop and a do-while loop but not for-each.
Node
I know it is late to the party, but...
Since Java-8 you can write @RayHulha's solution even more concisely by using lambda expression (for creating a new Iterable) and default method (for Iterator.remove):
public static Iterable iterable(final NodeList nodeList) {
return () -> new Iterator() {
private int index = 0;
@Override
public boolean hasNext() {
return index < nodeList.getLength();
}
@Override
public Node next() {
if (!hasNext())
throw new NoSuchElementException();
return nodeList.item(index++);
}
};
}
and then use it like this:
NodeList nodeList = ...;
for (Node node : iterable(nodeList)) {
// ....
}
or equivalently like this:
NodeList nodeList = ...;
iterable(nodeList).forEach(node -> {
// ....
});