Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 初始化未知大小的多维/锯齿字符串数组_Java_Multidimensional Array - Fatal编程技术网

Java 初始化未知大小的多维/锯齿字符串数组

Java 初始化未知大小的多维/锯齿字符串数组,java,multidimensional-array,Java,Multidimensional Array,我知道第一个参数中有多少条公交线路。第二个参数的大小是可变的,取决于路线。 我如何以这种方式初始化它?您应该能够这样编写它 public class BusInformation { String BusRoute[][] = new String[4][]; BusRoute[0] = new String[] {"a" , "b", "c"}; BusRoute[1] = new String[] {"a" , "b"}; } 它与代码相同,但希望为第二个维度指定一个初始大小0,这样

我知道第一个参数中有多少条公交线路。第二个参数的大小是可变的,取决于路线。
我如何以这种方式初始化它?

您应该能够这样编写它

public class BusInformation {

String BusRoute[][] = new String[4][];

BusRoute[0] = new String[] {"a" , "b", "c"};

BusRoute[1] = new String[] {"a" , "b"};
}
它与代码相同,但希望为第二个维度指定一个初始大小
0
,这样就可以清楚地看到它没有任何初始大小。我还将数组的加载包装到类构造函数中


二维数组只是普通的一维数组,其中每个项都是任意长度的数组。即使您将2D数组设置为初始大小,例如
新字符串[4][5]
,也不会有任何区别-您仍然可以将更小或更大的数组分配给基本数组的每个项,就像您已经做的那样。

如果初始化时大小可变且未知,则数组可能不是最佳选项。我有两个建议,一个是使用
列表数组
,或者使用番石榴


如果您确实想/需要继续使用二维数组,请按上述方式对其进行初始化(使用第一组元素或作为空数组),并且当您需要添加值时,使用以创建具有新大小的数组副本,以允许添加新元素。

如果您询问硬连线初始化,您的代码可以写得更简洁,如下所示:

public class BusInformation {
    String busRoute[][] = new String[4][0];

    public BusInformation(){
        busRoute[0] = new String[] {"a" , "b", "c"};
        busRoute[1] = new String[] {"a" , "b"};
    }
}
但要注意,构造函数的方法可以完成的初始化量是有严格限制的。(这与一个方法的字节码必须适合64k字节这一事实有关。)


如果您想从(比如)从文件中读取的东西初始化数组,那么基本上就是计算数组需要多大,创建它们,并填充它们的值。(例如,您可能会将数据读入列表列表,然后转换为二维数组形式。

这会很好。您尝试过吗?我想您需要发布更多代码,让我们了解上下文。您发布的代码不会编译。我假设数组初始化是在构造函数中完成的。是否有输入参数决定“第二个参数”的大小?不客气。如果您认为答案有帮助,您可以单击左侧的“向上”箭头,以便人们知道它有帮助。如果答案解决了您的问题,您也可以将其“勾选”为已接受的答案。
public class BusInformation {
    String BusRoute[][] = new String[][]{
        {"a" , "b", "c"},
        {"a" , "b"},
        null,
        null
    };
}