java将动态数组拆分为多个数组
我试图将一个未知长度的动态数组拆分为多个部分,并将所有部分作为数组列表返回,每个数组都位于给定长度的列表中。我在这里搜索了一个解决方案,但只找到了固定长度数组的解决方案。我试了一下,想出了这个:
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;
}
# 1 楼答案
如何在
null
数组中复制内容见javadoc
抛出:
在OP更改代码时编辑:
你的问题就在这里
将
place2
赋值为splitSize
,然后创建一个新的字符串数组然后,您试图将
input
复制到索引splitSize
中的part
。记住,数组是零索引的说
splitSize = 2
。然后part
将是长度为2
的字符串数组,这些字符串被索引为0
和1
然后在
System.arraycopy(input, place, part, place2, splitSize);
行中,您试图复制part
的2
索引中的内容。因此ArrayIndexOutOfBoundsException
发生了也许这对你有帮助: