2012-04-08 20 views
12

Quiero crear una matriz bidimensional en la que quiero almacenar registros de la base de datos. Digamos que el primero es del tipo int y el segundo del tipo String (aquí estoy describiendo solo un registro, básicamente tipos de columnas db). ¿Cómo puedo hacerlo? ¿Es una matriz la estructura de datos correcta para eso?matriz bidimensional de diferentes tipos

Respuesta

5

Las matrices solo pueden contener un tipo. Si ese tipo es Object, entonces puede almacenar Object y cualquiera de sus subtipos, pero eso realmente no suena como lo que está tratando de lograr aquí.

Parece que lo que está describiendo es una matriz 2D para almacenar información de la base de datos, con cada elemento de la matriz como una columna en una de las filas. Este no es una matriz de registros, es una matriz de datos de columna.

En su lugar, simplemente almacene una matriz unidimensional de registros, donde cada elemento de la matriz es una referencia a toda la fila DB.

+0

Lo siento, pero no estoy seguro de lo que quiere decir con: "cada elemento de la matriz es una referencia a toda la fila DB". La fila completa de DB está formada por dos columnas de diferentes tipos, cadena e int. ¿Cómo puedo almacenarlo en una matriz? – lunar

+1

¿Qué estás usando para acceder a la base de datos? Debe haber un objeto que represente una fila en una tabla. Luego, esa fila debe tener métodos a los que pueda llamar para acceder a los datos de la columna en esa fila. Cualquier objeto que envuelve la fila de la base de datos es lo que necesita almacenar en su matriz. Quiero decir, eso es esencialmente lo que es una tabla de base de datos: una matriz de filas. – jefflunt

11

No estoy seguro de estar siguiendo, pero puede que esté buscando Map<Integer,String>. o Map<Integer,List<String>>. [Echar un vistazo a List y HashMap]

Map permite la asociación de la tecla [Integer] al valor [String o List].

Map también permite una búsqueda rápida de la clave y su valor adjunto.

(*) Debe utilizar Map<Integer,List<String>> si desea adjuntar más de un String por Integer, o también, puede utilizar apache commons MultiMap

+1

Map si es esto, java no permite el registro de Integer duplicado. –

+0

@yogeshprajapata Sin embargo, podría usar uno de los 'MultiMap's de Guava o Apache para permitir esto. – Jeffrey

+0

@Jeffrey pero no has mencionado aquí que estás hablando del Mapa de Gauvas. –

1

Puede utilizar

HashMap<Integer, ArrayList<String>> 
6

Usted puede hacer lo mismo cosa con la ayuda de este

Object[][] o = new Object[10][10]; 

o[0][0] = 1; 
o[0][1] ="hello"; 

System.out.println(o[0][0]); 
System.out.println(o[0][1]); 
+0

Hola, Yogesh, estoy tratando de hacer lo mismo con o [0] [0] = una matriz de cadenas y o [0] [1] = una cadena. esto no funciona para mí, ¿debería funcionar esto para mí? – Tomer

+0

Publica tu código por favor. –

0

Si simplemente desea tener una columna de String dat una y otra columna de datos int, esto es lo que puede considerar hacer:

declarar una matriz de 2 dimensiones Cadena

String[][] words = new String[][]; 

Su primera columna puede contener todos los datos de cadena. La segunda columna puede tener los datos numéricos pero en forma de cadena. Es posible que desee utilizar el Integer.toString() y Integer.parseInt() métodos para hacer esto

words[index][index] = Integer.toString(Integer.parseInt(args)); 

no estoy seguro de qué es exactamente lo que se espera lograr, pero es posible considerar la modificación de este fragmento para satisfacer sus necesidades

Cuestiones relacionadas