在特定位置递增arrayList的元素

时间:2015-06-08 09:50:46

标签: java

我发现arrayList minuteList元素之间的最大区别是在此位置后用min_value递增元素以重新填充时间表。在当前,总是添加相同的元素。

minuteList记录了while语句:

[288, 318, 346, 376, 406, 436, 466, 1006, 1036, 1066, 1096, 1126, 1156]
几个循环后

minuteList`:

[288, 318, 346, 376, 406, 436, 466, 496, 496, 496, 496, 1006, 1036, 1066, 1096, 1126, 1156]

正确的结果应该是

[288, 318, 346, 376, 406, 436, 466, 496, 526, 556, 586, 616,..., 1006, 1036, 1066, 1096, 1126, 1156]

代码:

Collections.sort(diffArray);

int element = diffArray.get(diffArray.size() - 1).getElement();
int nextElement = diffArray.get(diffArray.size()-1).getNextElement();

int differance = nextElement - element;

int elementIndex = minuteList.indexOf(element);

while(differance > min_value){
    int addTime = minuteList.get(elementIndex) + min_value;
    minuteList.add(elementIndex + 1, addTime);

}

1 个答案:

答案 0 :(得分:1)

您的循环会继续将相同的值(minuteList.get(elementIndex) + min_value)添加到elementIndex + 1的相同位置(ArrayList),这会解释您看到的多个496元素。

如果您希望在每次迭代中添加新值,则需要在每次迭代中更改addTime

int addTime = minuteList.get(elementIndex) + min_value;
while(differance > min_value){
    minuteList.add(++elementIndex, addTime);
    addTime += min_value;
}

请注意,我也在递增elementIndex。否则,所有新元素将被添加到同一位置,向前推送先前添加的元素,因此它们将以相反的顺序添加。

您可能希望在实际修改differancemin_value的循环中添加一些代码。否则循环将永远不会结束。