我有一个文档,我正在搜索特定的实例,但是这些实例是由用户指定的,并且有多个。除了在针对数组搜索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();
}
}
}
}
感谢您提供任何帮助。
答案 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
}
}
}