我的动态尺寸为string[]
String[] a = {'','',....dynamic values}
因此大小将在运行时确定。
我需要将String[]
a拆分为固定数组大小1000说
String[] b = {first 1000 values of a}
String[] c = {next set of 1000 values of a}
请帮助我实现这一目标。
答案 0 :(得分:1)
将它们合并为一个二维数组,而不是多个数组。
int n = (int)Math.ceil(a.length/1000d);
String str[][] = new String[n][1000]; //Two dimensional array
int x=0;
for(int i=0; i<n; i++)
{
for(int j=0; j<1000 && x<a.length; j++)
{
str[i][j] = a[i];
x++;
}
}
现在,如果你愿意,那么你可以将这个二维数组拆分成多个数组。
答案 1 :(得分:1)
您可以像这样使用Arrays.copyOfRange
String[] a = {"a","b","c","d","r","g","f","h", ...};
String[] b = Arrays.copyOfRange(a, 0, 1000, String[].class);
String[] c = Arrays.copyOfRange(a, 1000, a.length, String[].class);
但如果'a'的长度小于1000则会崩溃 所以你可以这样做
int range = (a.length < 1000) ? a.length : 1000;
String[] b = Arrays.copyOfRange(a, 0, range, String[].class);
String[] c = Arrays.copyOfRange(a, range, a.length, String[].class);
如果'a'的长度小于1000,'b'的大小与'a'相同 因此,如果您希望始终具有b 1000的大小,则必须初始化长度为1000的“b”
String[] b = new String[1000]();
然后将其填入forcycle
答案 2 :(得分:-1)
Arrays.copyOfRange(boolean [],int,int) 第二个int可以大于数组的长度,并将回滚到该长度。