我有一个正在搜索特定实例的文档,但是这些实例是由用户指定的,并且不止一个。除了在for循环内搜索针对数组的Nodelist内的for循环外,还有没有一种我不会错过的方法?还是更简单的方法?

到目前为止,我的代码摘要如下:

public void sortDoc(Document doc){
    NodeList list = doc.getFirstChild().getChildNodes();
    ArrayList<String> typeList = otherSorter.getTypes();
    for(int i=0; i<list.getLength(); i++){
        for(int j=0; j<typeList.size(); j++){
            if(list.item(i).getNodeName()==typeList.get(j)){
                doTheThing();
            }
        }
    }
}


谢谢你提供的所有帮助。

最佳答案

您可以使用List#contains(Object)在ArrayList中检查节点名称。

for(int i=0; i<list.getLength(); i++){
    if(typeList.contains(list.item(i).getNodeName())){
         // Do Something.
    }
}


也,

if(list.item(i).getNodeName()==typeList.get(j)) {


绝对不要使用上述==运算符进行字符串值比较。

始终使用equals()方法进行字符串值比较,如下所示:

if(list.item(i).getNodeName().equals(typeList.get(j))) {

09-29 21:59