按数组搜索NodeList

时间:2013-09-27 05:39:23

标签: java

我有一个文档,我正在搜索特定的实例,但是这些实例是由用户指定的,并且有多个。除了在针对数组搜索Nodelist的for循环中的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();
            }
        }
    }
}

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用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))) {

答案 1 :(得分:1)

请参阅contains功能。

    public void sortDoc(Document doc){
        NodeList list = doc.getFirstChild().getChildNodes();
        ArrayList<String> typeList = otherSorter.getTypes();
        for(int i=0; i<list.getLength(); i++){
            if(typeList.contains(list.item(i)) {
                 //Do Thing
            }
        }
    }