我必须将一个字符串列表分成块,因此我编写了这个方法,
public static List<List<String>> chunkIds(List<String> ids,
int max) {
List<List<String>> chunks = new ArrayList<>();
for (int i = 0; i < ids.size(); i = i + max) {
List<String> chunk = ids.subList(i, i + max);
chunks.add(chunk);
}
return chunks;
}
当我调用方法时 获取subList时会得到IndexOutOfBoundsException。其中max是一个块大小。有人可以帮我理解索引逻辑错误。
答案 0 :(得分:2)
如果您使用i + max
作为subList
的第二个参数,如果ids.size()
不能被max
整除,则该索引将大于{{ 1}}。
使用
ids.size()
而不是Math.min(i + max, ids.size())
。
或者,每次避免计算i + max
:
min
答案 1 :(得分:1)
List<String> chunk = ids.subList(i, i + max);
什么是max
? i + max
不应大于ids.size()