将动态字符串[]拆分为固定大小的数组

时间:2016-03-28 12:56:18

标签: java arrays string

我的动态尺寸为string[]

String[] a = {'','',....dynamic values} 

因此大小将在运行时确定。

我需要将String[] a拆分为固定数组大小1000说

String[] b = {first 1000 values of a}
String[] c = {next set of 1000 values of a}

请帮助我实现这一目标。

3 个答案:

答案 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可以大于数组的长度,并将回滚到该长度。