我想把一个长度未知的动态数组分成多个部分,并将所有部分作为数组列表返回,每个数组的长度为给定长度。我在这里搜索了解决方案,但只找到了针对固定长度数组的解决方案。我已经尝试过并想出了以下方法:
我一直遇到越界错误,但不确定哪里出了问题。非常感谢任何帮助!谢谢!
编辑: 对于那些在谷歌搜索并寻找快速答案的人们,这个方法会分割您的标准数组,并将剩余部分添加到末尾:
private static ArrayList<String[]> list = new ArrayList<String[]>();
public static ArrayList<String[]> split(String input[], int splitSize){
int place = 0;
int place2 = splitSize;
for(int i = 0; i < input.length/splitSize; i++){
String[] part = new String[splitSize];
System.arraycopy(input, place, part, place2, splitSize);
place = place + splitSize;
place2 = place2 + splitSize;
System.arraycopy(input, place, part, place2, splitSize);
list.add(part);
}
return list;
}
我一直遇到越界错误,但不确定哪里出了问题。非常感谢任何帮助!谢谢!
编辑: 对于那些在谷歌搜索并寻找快速答案的人们,这个方法会分割您的标准数组,并将剩余部分添加到末尾:
public static String[][] split(String[] input, int splitSize) {
int numOfSplits = (int)Math.ceil((double)input.length / splitSize);
String[][] output = new String[numOfSplits][];
for(int i = 0; i < numOfSplits; ++i) {
int start = i * splitSize;
int length = Math.min(input.length - start, splitSize);
String[] part = new String[length];
System.arraycopy(input, start, part, 0, length);
output[i] = part;
}
return output;
}
private static ArrayList<String[]> list = new ArrayList<String[]>();
。 - Defa1t