这看起来微不足道,但也许我对 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 }
答案 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;
}
}