Java ArrayList子列表上的索引超出范围

Java ArrayList子列表上的索引超出范围,java,arraylist,Java,Arraylist,我有一个11000个对象的ArrayList,我想使用ArrayList.subList一次处理200个对象。当我把它放在for循环中时,我得到的索引超出了范围。如何最好地控制偏移 for(int i = 0; i< aList.size(); i+=200){ process(aList(i,i+200)); } 假设您的ArrayList大小正好为11000: for(int i = 200; i< aList.size(); i+=200){ process(aL

我有一个11000个对象的ArrayList,我想使用ArrayList.subList一次处理200个对象。当我把它放在for循环中时,我得到的索引超出了范围。如何最好地控制偏移

for(int i = 0; i< aList.size(); i+=200){
   process(aList(i,i+200));
}

假设您的ArrayList大小正好为11000:

for(int i = 200; i< aList.size(); i+=200){
   process(aList(i-200,i-1));  //0 to 199, 200 - 399......  (0 - 10999 = 11000)
}

假设您的ArrayList大小正好为11000:

for(int i = 200; i< aList.size(); i+=200){
   process(aList(i-200,i-1));  //0 to 199, 200 - 399......  (0 - 10999 = 11000)
}

您可以获得List.size和计数器i+200的最小值:

对于11000个对象的情况,最后一次迭代将获得从10800到10999的子列表


这还将考虑列表大小不是200的倍数的情况。

您可以获得list.size和计数器i+200的最小值:

对于11000个对象的情况,最后一次迭代将获得从10800到10999的子列表


这还将考虑列表大小不是200的倍数的情况。

索引上出现越界错误的原因是i到i+200实际上正在处理201个项目。例如,0到200是201项。更改进程列表i,i+200;对于过程主义者i,i+199;这导致错误的原因是,最后一个循环引用了超过最后一个项的1个项。它引用的是索引11001。

索引上出现越界错误的原因是i到i+200实际上正在处理201个项目。例如,0到200是201项。更改进程列表i,i+200;对于过程主义者i,i+199;这导致错误的原因是,最后一个循环引用了超过最后一个项的1个项。它引用的是索引11001。

这是一条路要走。你的问题和另一个答案将省去任何没有填满200个长列表的条目,但这一个将允许它们。这是一条路要走。你的问题和另一个答案将省去任何没有填满200个长列表的条目,但这一个将允许它们。