Как найти длины многомерного массива с не равными индексами?
Например, у меня есть int[][] pathList = new int[6][4]
Без собственно жесткого кодирования индексов мне нужно найти "6" и "4".
Я могу найти 6 с pathList.length
, но как получить "4"?
Как найти длины многомерного массива с не равными индексами?
Например, у меня есть int[][] pathList = new int[6][4]
Без собственно жесткого кодирования индексов мне нужно найти "6" и "4".
Я могу найти 6 с pathList.length
, но как получить "4"?
Это даст вам длину массива в индексе i
pathList[i].length
Важно отметить, что в отличие от C или С++ длина элементов двумерного массива в Java не обязательно должна быть одинаковой. Например, когда pathList
создается эквивалентно new int[6][]
, он может содержать 6 int []
экземпляров, каждый из которых может быть другой длины.
Поэтому, когда вы создаете массивы так, как вы показали в своем вопросе, вы также можете сделать
pathList[0].length
так как вы знаете, что все они имеют одинаковую длину. В других случаях вам нужно определить, конкретно для вашего приложения, то, что означает длина второго измерения - это может быть максимальная длина всех элементов или, возможно, минимальная. В большинстве случаев вам нужно будет перебирать все элементы и читать их длины, чтобы принять решение:
for(int i = 0; i < pathList.length; i++)
{
int currLen = pathList[i].length;
}
Это для трехмерного массива.
int x[][][]=new int[5][8][10];
System.out.println(x.length+" "+x[1].length+" "+x[0][1].length);
ВЫХОД: 5 8 10
Java имеет "зубчатые" многомерные массивы, что означает, что каждая "строка" в вашем двумерном массиве может иметь разное количество компонентов. Если вы можете предположить, что каждая строка имеет одинаковое количество компонентов, используйте:
pathList[0].length;
В противном случае вам придется выполнять итерацию:
int maxRowLength = 0;
for (int i = 0; i < pathList.length; i++) {
if (maxRowLength < pathList[i].length) {
maxRowLength = pathList[i].length;
}
}
Для массива 2 D: -
int x[][] = new int[6][12];
System.out.println(x.length + " " + x[1].length);
ВЫХОД: 6 12
В java мы можем определить массив массивов, которые мы называем многомерными массивами. Массив массивов мы имеем в виду, что один элит из нашего массива снова является массивом (в java может быть многократной длины). Чтобы найти длину multi массив, имеющий все подмассивы одинакового размера, мы можем использовать:
int[][]a=new int[3][3];//let a[][] be my array
a.length will work. //a is an object of proxy class and length is its property.
Однако, если у вас есть подмассивы разных размеров, вам придется перебирать их.
for(i=0;i<a.length;i++)
int cur_size=a[i].length;