2012-04-08 21 views
12

Voglio creare una matrice bidimensionale in cui voglio memorizzare i record dal database. Quindi diciamo che il primo è di tipo int e il secondo di tipo String (qui sto descrivendo solo un record quindi fondamentalmente tipi di colonne db). Come posso farlo? Un array è la giusta struttura dati per questo?Matrice bidimensionale di diversi tipi

risposta

5

Gli array possono contenere solo un tipo. Se quel tipo sembra essere Object, allora può memorizzare Object e uno qualsiasi dei suoi sottotipi, ma non sembra proprio quello che stai cercando di ottenere qui.

Sembra che quello che stai descrivendo sia un array 2D per memorizzare le informazioni del database, con ogni elemento nell'array costituito da una colonna in una delle righe. Questo non è un array di record, è un array di dati di colonna.

Invece, è sufficiente memorizzare un array unidimensionale di record, in cui ogni elemento dell'array è un riferimento all'intera riga DB.

+0

Mi dispiace ma non sono sicuro di cosa intendi con: "ogni elemento dell'array è un riferimento all'intera riga DB". L'intera riga DB è composta da due colonne di diverso tipo, string e int. Come posso conservarlo in un array? – lunar

+1

Cosa stai usando per accedere al database? Ci deve essere un oggetto che rappresenta una riga in una tabella. Quindi quella riga deve avere metodi che puoi chiamare per accedere ai dati della colonna in quella riga. Qualunque oggetto avvolga la riga del database è ciò che è necessario archiviare nell'array. Voglio dire, questo è essenzialmente ciò che una tabella di database è - una serie di righe. – jefflunt

11

Non sono sicuro che lo stia seguendo, ma potresti cercare uno Map<Integer,String>. o Map<Integer,List<String>>. [Avere uno sguardo su List, e HashMap]

Map consente l'associazione del tasto [Integer] per il valore [String o List].

Map consente inoltre la ricerca rapida della chiave e il relativo valore allegato.

(*) Si dovrebbe usare Map<Integer,List<String>> se si desidera collegare più di un String per Integer, o, in alternativa è possibile utilizzare comuni apache MultiMap

+1

Map se si questo java non consente record per il numero intero duplicato. –

+0

@yogeshprajapata Per consentire ciò, tuttavia, è possibile utilizzare uno dei 'MultiMap' di Guava o di Apache. – Jeffrey

+0

@Jeffrey ma non hai menzionato qui che stai parlando della mappa di Gauvas. –

1

È possibile utilizzare

HashMap<Integer, ArrayList<String>> 
6

Si può fare lo stesso cosa con l'aiuto di questo

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

Hey Yogesh, sto cercando di fare lo stesso con o [0] [0] = un array di stringhe e o [0] [1] = a String. questo non funziona per me, dovrebbe funzionare per me? – Tomer

+0

Invia il tuo codice per favore. –

0

Se si desidera semplicemente avere una colonna di stringa dat una e un'altra colonna di dati int, questo è ciò che si può prendere in considerazione facendo:

dichiarare un array di 2 String bidimensionale

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

La tua prima colonna può contenere tutti i dati String. La seconda colonna può avere i dati numerici ma sotto forma di stringa. Si consiglia di utilizzare l'Integer.toString() e Integer.parseInt() per fare questo

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

io non sono sicuro di cosa esattamente si spera di raggiungere, ma si può prendere in considerazione la modifica di questo frammento di codice in base alle proprie esigenze

Problemi correlati