索引超出ArrayList子列表的范围

j_v*_*a19 1 java arraylist

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

for(int i = 0; i< aList.size(); i+=200){
   process(aList(i,i+200));
}
Run Code Online (Sandbox Code Playgroud)

man*_*uti 6

你可以得到最低List.size()和柜台i + 200:

for (int i = 0; i < aList.size(); i += 200) {
    int min = Math.min(aList.size(), i + 200);
    process(aList.subList(i, min));
}
Run Code Online (Sandbox Code Playgroud)

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

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