gpt4 book ai didi

java - Arraylist 不断抛出 IndexOutOfBounds

转载 作者:行者123 更新时间:2023-12-02 07:11:53 27 4
gpt4 key购买 nike

我正在尝试构建一棵区间树。在这一部分中,我必须按升序排列所有左端点,并按升序排列所有右端点,并将它们放入单点列表中(无重复)。但是,当我尝试将正确的端点合并到点列表中时,我不断收到 indexOutOfBounds 异常。我已经确保了容量,这样就不会发生这种情况,但无论如何它都会发生。我在这里不明白什么?

public static ArrayList<Integer> getSortedEndPoints(ArrayList<Interval> leftSortedIntervals, ArrayList<Interval> rightSortedIntervals) {

ArrayList<Integer> result = new ArrayList<Integer>();

for (int i = 0 ; i < leftSortedIntervals.size() ; i++ ) {

if (i >= 1 && leftSortedIntervals.get(i-1).leftEndPoint != leftSortedIntervals.get(i).leftEndPoint ) {
result.add(leftSortedIntervals.get(i).leftEndPoint);
}
else if (i == 0) {

result.add(leftSortedIntervals.get(i).leftEndPoint);

}

}
result.ensureCapacity(rightSortedIntervals.size()*2);
for (int j = 0 ; j < rightSortedIntervals.size(); j++) {
boolean duplicate = false;
int size = result.size()-1;
int temp = rightSortedIntervals.get(j).rightEndPoint;
while (size >= 0 && result.get(size) >= rightSortedIntervals.get(j).rightEndPoint ) {
if (result.get(size) == rightSortedIntervals.get(j).rightEndPoint) {
duplicate = true;
break;
}
else {
result.set(size+1, result.get(size));

size--;
}


}
if (duplicate = true) {

continue;

}
else {
result.add(size, temp);
}
}


return result;
}

此行发生错误:

else {
result.set(size+1, result.get(size));

size--;
}

最佳答案

你有:

int size = result.size() - 1;
// ...
result.set(size + 1, result.get(size));
size--;

因此每次都会发生错误:在第一次迭代时,size + 1 == result.size(),因此你无法调用result.set(size+1, everything)

关于java - Arraylist 不断抛出 IndexOutOfBounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15395019/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com