Lok*_*oki 15 java arrays multidimensional-array
我只是有一个想法来测试一些东西并且它有效:
String[][] arr = new String[4][4];
arr[2] = new String[5];
for(int i = 0; i < arr.length; i++)
{
System.out.println(arr[i].length);
}
Run Code Online (Sandbox Code Playgroud)
输出显然是:
4
4
5
4
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
ars*_*jii 21
- 这是编码的好坏吗?
像任何事情一样,这取决于具体情况.在某些情况下,锯齿状数组(因为它们被称为)实际上是合适的.
- 这有什么用呢?
那么,用于在一个阵列中存储具有不同长度的数据集.举例来说,如果我们有弦"hello"和"goodbye",我们可能希望将自己的字符数组存储在一个结构.这些char数组具有不同的长度,因此我们将使用锯齿状数组.
- 最重要的是,有没有办法在声明本身中创建这样的结构?
是:
char[][] x = {{'h','e','l','l','o'},
{'g','o','o','d','b','y','e'}};
Run Code Online (Sandbox Code Playgroud)
- 还有......为什么甚至可以做到?
因为它是Java语言规范允许的,§10.6.
Wil*_*son 11
这是一种很好的编码风格,它没有任何问题.我自己为过去的不同问题创建了锯齿状阵列.
这很好,因为您可能需要以这种方式存储数据.以这种方式存储的数据将允许您节省内存.在某些情况下,更有效地映射项目将是一种自然的方式.
在一行中,没有显式填充数组?不,这是我能想到的最接近的事情.
int[][] test = new int[10][];
test[0] = new int[100];
test[1] = new int[500];
Run Code Online (Sandbox Code Playgroud)
这将允许您使用不同长度的数组填充行.我更喜欢这种方法来填充像这样的值:
int[][] test = new int[][]{{1,2,3},{4},{5,6,7}};
Run Code Online (Sandbox Code Playgroud)
因为在处理大型不规则数组时输入更具可读性和实用性.