我有一个ArrayIndexOutofBounds异常,代码如下.抛出异常就行了 Node nodeJ = vect.get(j)
但它对我没有意义,因为j肯定比我小, Node nodeI = vect.get(i) 并且不会抛出任何异常.
任何帮助表示赞赏.
public static Vector join(Vector vect) throws ItemNotFoundException {
Vector<Node> remain = vect;
for (int i = 1; i < vect.size(); i++) {
Node nodeI = vect.get(i);
for (int j = 0; j < i; j++) {//traverse the nodes before nodeI
Node nodeJ = vect.get(j);
if (nodeI.getChild1().getSeq().equals(nodeJ.getSeq())) {
nodeI.removeChild(nodeJ);
nodeI.setChild(nodeJ);
remain.remove(j);
}
if (nodeI.getChild2().getSeq().equals(nodeJ.getSeq())) {
nodeI.removeChild(nodeJ);
nodeI.setChild(nodeJ);
remain.remove(j);
}
}
}
return remain;
}
Run Code Online (Sandbox Code Playgroud)
Node nodeJ = vect.get(j) 您正在通过别名引用从正在迭代的同一向量中删除元素remain.如果你想使用副本,你应该有
Vector<Node> remain = new Vector<Node>(vect);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |