有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个动态大小的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) 个答案

  1. # 1 楼答案

    可以使用数组。像这样的复制范围

        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填写

  2. # 2 楼答案

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

  3. # 3 楼答案

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

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

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