我可以在Java中使用for-each遍历NodeList吗?
我想NodeList
在Java中使用for-each循环进行迭代。我有一个for循环和一个do-while循环,但没有for-each。
NodeList nList = dom.getElementsByTagName("year");do {
Element ele = (Element) nList.item(i);
list.add(ele.getElementsByTagName("MonthId").item(0).getTextContent());
i++;
} while (i < nList.getLength());
NodeList nList = dom.getElementsByTagName("year");
for (int i = 0; i < nList.getLength(); i++) {
Element ele = (Element) nList.item(i);
list.add(ele.getElementsByTagName("MonthId").item(0).getTextContent());
}
回答:
此问题的解决方法很简单,值得庆幸的是,您只需实现一次即可。
import java.util.*;import org.w3c.dom.*;
public final class XmlUtil {
private XmlUtil(){}
public static List<Node> asList(NodeList n) {
return n.getLength()==0?
Collections.<Node>emptyList(): new NodeListWrapper(n);
}
static final class NodeListWrapper extends AbstractList<Node>
implements RandomAccess {
private final NodeList list;
NodeListWrapper(NodeList l) {
list=l;
}
public Node get(int index) {
return list.item(index);
}
public int size() {
return list.getLength();
}
}
}
在将此实用程序类添加到项目中并static
import
为XmlUtil.asList
源代码添加方法的后,您可以像这样使用它:
for(Node n: asList(dom.getElementsByTagName("year"))) { …
}
以上是 我可以在Java中使用for-each遍历NodeList吗? 的全部内容, 来源链接: utcz.com/qa/409739.html