Java 向量 - 数组索引越界

Java Vector - Array index out of bounds

这看似微不足道,但也许我对Vectors的理解不是应该的。我在这段代码中收到 [java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1] 。错误出现在第3行,既然看是根据Vector的大小,那么数组怎么会越界呢?

方法“getChangeSets()”returns一个列表。 List 最初创建为 Vector。

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   }

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

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

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

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

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