¿Cuáles son algunos de los diferentes casos que debería considerar usar matrices bidimensionales sobre matrices unidimensionales en Java?

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

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).

Una matriz bidimensional es buena si desea representar una matriz o una estructura de datos gráfica.

Una matriz unidimensional es buena si desea almacenar una lista de datos.

More Interesting

¿Existe un libro o sitio web que describa los problemas y luego le solicite la estructura de datos / algoritmos más apropiados necesarios para resolver el problema?

¿Qué problemas comunes se resuelven con la programación dinámica?

¿Cuánto cálculo se requiere para comprender algoritmos y redes de computadoras?

¿Por qué la complejidad temporal de los algoritmos de Edmond Karps O (VE ^ 2)? A mí me parece O (E * (E + V)).

¿Cuáles son algunas diferencias entre los campos de la investigación algorítmica y la investigación de operaciones?

Con los algoritmos de cifrado modernos, ¿es factible que alguien sepa qué algoritmo se utilizó al mirar el texto cifrado?

¿Qué problema exacto está resolviendo el 'comercio conversacional'?

¿Cuáles son algunos de los algoritmos comunes y estrategias de diseño utilizados por los desarrolladores de juegos sin fin?

¿Cuál es la diferencia entre los métodos de búsqueda y los algoritmos utilizados por los motores de búsqueda de Google, Yahoo y Bing? ¿Cómo lo explicarías de una manera simple?

¿Es posible "escribir un programa o algoritmo" para encontrar la complejidad de tiempo de cualquier programa dado como entrada?

¿Cuál es la diferencia entre [matemáticas] 2 ^ {n ^ {o (1)}} [/ matemáticas] y [matemáticas] 2 ^ {O (n ^ e)} [/ matemáticas] (para algunos e <1)?

Al explorar un museo, ¿es mejor usar BFS o DFS?

¿Cómo podemos transferir datos digitales binarios a un canal físico?

¿Cuáles son los pros y los contras de imprimir una matriz en Java?

¿Cuál es la forma correcta de leer CLRS (Introducción a los algoritmos)?