La migliore struttura di dati Java per memorizzare una tabella di Oracle a 3 colonne? Matrice a 3 colonne? o doppia mappa?

StackOverflow https://stackoverflow.com/questions/1612430

Domanda

Qual è la migliore struttura di dati per memorizzare una tabella di Oracle che è di circa 140 righe per 3 colonne. Stavo pensando a un array multidimensionale.

Per migliore non intendo necessariamente il più efficiente (ma sarei curioso di conoscere le tue opinioni) poiché il programma verrà eseguito come lavoro con un sacco di tempo per essere eseguito ma ho alcune restrizioni:

È possibile che più chiavi siano " null " All'inizio. quindi la prima colonna potrebbe avere più valori null. Devo anche poter accedere agli elementi dalle altre colonne. Qualcosa di meglio di una ricerca lineare per accedere ai dati?

Quindi, qualcosa come [] [] [] funzionerebbe .. ma c'è qualcosa come una mappa a 3 colonne a cui posso accedere tramite la chiave o la seconda colonna? So che le mappe hanno solo due valori.

Tutti i dati saranno probabilmente stringhe o espressi come stringhe.

Grazie

È stato utile?

Soluzione

Se hai bisogno di accedere ai tuoi dati tramite chiave e con un'altra chiave, allora userei solo 2 mappe e definirei una classe separata per conservare il tuo record.

class Record {
   String field1;
   String field2;
   String field3;
}

e

   Map<String, Record> firstKeyMap = new HashMap<String, Record>();
   Map<String, Record> secondKeyMap = new HashMap<String, Record>();

Altri suggerimenti

Una classe personalizzata con 3 campi e un java.util.List di quella classe.

In questo caso non vi è alcun vantaggio nei dati di scarpa scaricabile negli array, non si ottengono miglioramenti delle prestazioni e certamente nessun miglioramento della manutenibilità del codice.

Questo è un altro esempio di persone che scrivono FORTRAN in un linguaggio orientato agli oggetti.

Java parla di oggetti. Sarebbe molto meglio se iniziassi a utilizzare gli oggetti per sottrarre il problema, nascondere i dettagli ai clienti e ridurre l'accoppiamento.

Quale oggetto sensibile, con un comportamento significativo, rappresentano questi tre elementi? Comincerei da quello e mi preoccuperei delle strutture di dati e della persistenza più tardi.

  

Tutti i dati saranno probabilmente stringhe o espressi come stringhe.

Va ??bene se sono davvero stringhe, ma ti incoraggio a guardare più in profondità e vedere se puoi fare di meglio.

Ad esempio, se si scrive un'applicazione che utilizza punteggi di credito, si potrebbe essere tentati di persistere come colonna numerica in un database. Ma puoi trarre vantaggio dall'esaminare il problema più intensamente e incapsulare quel valore in un oggetto CreditScore. Quando lo hai, ti rendi conto che puoi aggiungere qualcosa come unità ("FICO" contro "TransUnion"), scala (intervallo da 0 a 850) e forse alcuni comportamenti ricchi (ad esempio, regole che governano quando riordinare il punteggio ). Incapsuli tutto in un singolo oggetto invece di disperdere la logica per operare su punteggi di credito in tutta la tua base di codice.

Inizia a pensare meno in termini di tabelle e colonne e altro sugli oggetti. O cambia lingua. Python ha il concetto di tuple incorporato. Forse funzionerà meglio per te.

Vorrei creare un oggetto che mappasse il tuo record e quindi creare una raccolta di questo oggetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top