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

eyh26e7m  于 2021-07-13  发布在  Java
关注(0)|答案(3)|浏览(274)

我有一个 string[] 动态大小

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

因此大小将在运行时确定。
我要分开了 String[] 一个固定的数组大小为1000说

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

请帮我实现这个目标。

zfycwa2u

zfycwa2u1#

可以像这样使用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”相同,因此如果希望始终保持大小为b1000,则必须用长度1000初始化“b”

String[] b = new String[1000]();

然后把它填在forcycle里

42fyovps

42fyovps2#

不要使用多个数组,而是将它们组合成一个二维数组。

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++;
    }
}

如果你愿意的话,你可以把二维数组分割成多个数组。

bfrts1fy

bfrts1fy3#

copyofrange(boolean[],int,int)第二个int可以大于数组的长度,并将回滚到该长度。

相关问题