Split a list into fixed-size batches
Java
import java.util.ArrayList;
import java.util.List;
/** Chunk helpers used to batch API calls and SQL IN lists. */
public final class ListChunker {
private ListChunker() {
}
/** Returns consecutive views, each at most {@code size} elements. */
public static <T> List<List<T>> chunk(List<T> items, int size) {
if (size <= 0) {
throw new IllegalArgumentException("size must be positive: " + size);
}
List<List<T>> chunks = new ArrayList<>();
for (int start = 0; start < items.size(); start += size) {
int end = Math.min(start + size, items.size());
chunks.add(List.copyOf(items.subList(start, end)));
}
return chunks;
}
public static void main(String[] args) {
List<Integer> ids = List.of(1, 2, 3, 4, 5, 6, 7);
ListChunker.chunk(ids, 3).forEach(System.out::println);
// [1, 2, 3] / [4, 5, 6] / [7]
}
}