0

我有一个文档,我正在搜索特定实例,但是这些实例是由用户指定的,并且不止一个。除了 for 循环中的 for 循环在数组中搜索 Nodelist 之外,还有没有一种方法不会让系统陷入困境?还是更简单的方法?

到目前为止,我的代码在摘要中看起来像这样:

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();
            }
        }
    }
}

谢谢你提供的所有帮助。

4

2 回答 2

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))) {
于 2013-09-27T05:46:55.423 回答
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
            }
        }
    }
于 2013-09-27T05:42:32.040 回答