Java Vector - 数组索引越界

时间:2021-04-16 14:36:33

标签: java vector indexoutofboundsexception

这看起来微不足道,但也许我对 Vectors 的理解不是它应该的。我在此代码上收到 [java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1] 。错误发生在第 3 行。既然look 是基于Vector 的大小,那么数组怎么会越界?

“getChangeSets()”方法返回一个列表。列表最初是作为向量创建的。

2   for (int i = 0; i < getChangeSets().size(); i++) {
3       ChangeSet currentChangeSet = getChangeSets().get(i);
4       if (currentChangeSet.getSequentialNumber() == sequentialNumber) {
5           return currentChangeSet;
6       }
7   }

2 个答案:

答案 0 :(得分:0)

你最好不要使用索引迭代:

for (ChangeSet currentChangeSet : getChangeSets()) {
  if (currentChangeSet.getSequentialNumber() == sequentialNumber) {
    return currentChangeSet;
  }
}

我怀疑您的代码中发生的情况是 getChangeSets() 在调用之间改变了大小,特别是变小了。上面的代码只在第一次执行循环之前调用它一次。

答案 1 :(得分:0)

请在迭代前将变更集分配给变量。

List<ChangeSet> list = getChangeSets();
for (int i = 0; i < list.size(); i++) {
    ChangeSet currentChangeSet = list.get(i);
    if (currentChangeSet.getSequentialNumber() == sequentialNumber) {
        return currentChangeSet;
    }
}
相关问题