package org.zstack.utils.data;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class ArraySpliterImpl implements ArraySpliter {
@Override
public <T> List<T[]> split(T[] source, int lengthOfSubArray) {
int slices = source.length / lengthOfSubArray;
int residue = source.length % lengthOfSubArray;
List<T[]> ret = new ArrayList<T[]>(slices + (residue > 0 ? 1 : 0));
int offset = 0;
for (int i=0; i<slices; i++) {
T[] na = Arrays.copyOfRange(source, offset, offset + lengthOfSubArray);
ret.add(na);
offset += lengthOfSubArray;
}
if (residue != 0) {
T[] na = Arrays.copyOfRange(source, offset, offset + residue);
ret.add(na);
}
return ret;
}
}