2012-11-24 10 views
157

Sto cercando di implementare un dizionario (come nel libro fisico). Ho una lista di parole e il loro significato.Come si crea un dizionario in Java?

Quale struttura dati/tipo fornisce Java per memorizzare un elenco di parole e il loro significato come coppie chiave/valore.

In che modo, data una chiave, è possibile trovare e restituire il valore?

+16

Ebbene, nello spirito di concentrarsi sulla questione, non l'utente, sto votando per riaprire. Sono sicuro che questo utente abbia finito il corso ormai. ;) È un duplicato di http://stackoverflow.com/questions/1540673/java-equivalent-to-python-dictionaries, ma penso che le risposte qui siano migliori. –

risposta

8

Usa Map interface e un'implementazione come HashMap

+0

Un collegamento a una soluzione è il benvenuto, ma per favore assicurati che la tua risposta sia utile senza di essa: [aggiungi contesto intorno al link] (// meta.stackexchange.com/a/8259) in modo che i tuoi utenti abbiano qualche idea di cosa sia e perché è lì, quindi cita la parte più pertinente della pagina a cui stai collegando nel caso in cui la pagina di destinazione non sia disponibile. [Le risposte che sono poco più di un collegamento possono essere eliminate.] (// stackoverflow.com/help/deleted-answers) – FelixSFD

+1

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il link per riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - [Dalla recensione] (/ recensione/post di bassa qualità/17044904) – sfat

48

Questo crea dizionario di testo (stringa):

Map<String, String> dictionary = new HashMap<String, String>(); 

poi utilizzarlo come:

dictionary.put("key", "value"); 
String value = dictionary.get("key"); 
+1

'dizionario [" chiave "]' non funzionerà - dovrebbe essere 'dictionary.get (" chiave ")'. – arshajii

+9

Vero, probabilmente qualche C# è scivolato :) – SmartK8

221

Avrai voglia di un Map<String, String>. Classi che implementano l'interfaccia Map includono (ma non sono limitati a):

Ognuno è progettato/ottimizzato per determinate situazioni (andare ai loro rispettivi documenti per maggiori informazioni). HashMap è probabilmente il più comune; l'impostazione predefinita.

Per esempio (utilizzando un HashMap):

Map<String, String> map = new HashMap<String, String>(); 
map.put("dog", "type of animal"); 
System.out.println(map.get("dog")); 
 
type of animal 
+1

@Cruncher Implementa anche 'Map' (controlla javadoc) – arshajii

+1

@arshajii ho il dubbio che mappiamo manualmente tutte le stringhe nel dizionario o posso dire che memorizziamo manualmente il significato di tutte le parole. Quindi la mia domanda è, c'è un modo come i file db (dump) del dizionario per recuperare le parole e il loro significato/definizione in modo da evitare di aggiungere manualmente il significato di ogni parola –

+0

@VighaneshGursale Avrete bisogno di usare un metodo put per costruire la tua struttura dati durante l'elaborazione. Pensa a un comando put come leggere il file dal disco e metterlo in memoria (ram) in modo da poter lavorare con esso. Se si dispone di un file che si desidera caricare come una struttura di dati su load auto, è necessario esaminare la sorgente Java ma il suo complesso. –