Lo más importante a tener en cuenta es que no existe una matriz bidimensional en Java. Hay matrices de primitivas (int, float) y matrices de matrices. Lo que la gente llama una matriz bidimensional es lo último. Java no codifica la longitud de la matriz como parte de su tipo, por lo que las longitudes pueden variar según los parámetros de llamada.
Una matriz de matrices es una matriz irregular: la longitud de cada fila es independiente de las longitudes de las otras columnas. Si desea una matriz rectangular, debe asegurarse de que la creación de la fila use la misma longitud:
public int [] [] makeArray () {
int [] [] arr = nuevo int [NUM_ROWS] [];
para (int i = 0; i <longitud de arr; ++ i) {
arr [i] = nueva int [NUM_COLS];
}
volver arr;
}
- ¿Cuál es la diferencia básica entre loop y recursividad en C?
- Cómo encontrar un árbol de expansión T con el mínimo peso máximo de trayectoria para 2 vértices en G
- ¿Por qué todos me dicen que aprenda la estructura de datos y los algoritmos si quiero obtener un trabajo de desarrollo de software?
- ¿Cuál es el algoritmo más rápido para calcular el késimo elemento más pequeño en la unión de dos listas ordenadas de tamaño myn?
- ¿Las siguientes declaraciones de bucle en C / C ++ tienen el mismo tiempo de ejecución?
Por supuesto, si desea guardar algo de memoria para una matriz triangular:
public int [] [] makeTri () {
int [] [] arr = nuevo int [NUM_ROWS] [];
para (int i = 0; i <longitud de arr; ++ i) {
arr [i] = nuevo int [i + 1];
}
}
En resumen, realmente no quieres hacerlo. Es una conveniencia de notación que en realidad hace más trabajo al buscar elementos individuales, ya que tiene que indexar dos veces: una vez en la matriz de filas, luego una vez en la matriz de esa fila. Es mejor usar una sola matriz N-por-M y calcular el índice a partir de los índices de fila y columna. Por supuesto, no puede encontrar las dimensiones de la matriz representada a partir de los metadatos de la matriz, pero eso es un inconveniente menor.
(Es aún peor cuando se usan objetos de Array
).
(Y arruinas tus índices, como hice en la primera versión de esta respuesta).