Vector ArrayIndexOutOfBounds

Esm*_*ond 1 java

我有一个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)

Pét*_*rök 6

您正在通过别名引用从正在迭代的同一向量中删除元素remain.如果你想使用副本,你应该有

Vector<Node> remain = new Vector<Node>(vect);
Run Code Online (Sandbox Code Playgroud)