Come si crea un dizionario in Java? [chiuso]


236

Sto cercando di implementare un dizionario (come nel libro fisico). Ho un elenco di parole e il loro significato.

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

Come, data una chiave, posso trovare e restituire il valore?


24
Bene, nello spirito di concentrarmi sulla domanda, non sull'utente, sto votando per riaprire. Sono sicuro che questo utente abbia comunque terminato il corso. ;) È un duplicato di stackoverflow.com/questions/1540673/… , ma penso che le risposte qui siano migliori.
Adi Inbar,

Risposte:


313

Ti consigliamo un Map<String, String>. Le classi che implementano l' Mapinterfaccia includono (ma non sono limitate a):

Ognuno è progettato / ottimizzato per determinate situazioni (vai ai rispettivi documenti per maggiori informazioni). HashMapè probabilmente il più comune; il valore predefinito predefinito.

Ad esempio (usando a HashMap):

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

1
@Cruncher Inoltre implementa Map(controlla il javadoc)
arshajii

1
@arshajii ho un 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 poter evitare di aggiungere manualmente il significato di ogni parola
Vighanesh Gursale

@VighaneshGursale Dovrai usare un metodo put per costruire la tua struttura di dati durante l'espirazione. Pensa a un comando put come a leggere il file dal disco e metterlo in memoria (ram) in modo da poter lavorare con esso. Se hai un file che desideri caricare come struttura di dati su load auto, dovrai cercare java spring ma è complesso.
Dan Ciborowski - MSFT,

5
A proposito, in realtà non è necessario includere <String, String> la seconda volta. Puoi semplicemente fareMap<String, String> map = new HashMap<>();
Samuel Noyes il

Hai dimenticato di menzionare ConcurrentHashMap che è preferibile utilizzare su Hashtable
Arsenius

80

Questo crea un dizionario di testo (stringa):

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

lo usi quindi come:

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

Funziona ma fornisce un errore necessario per mantenere la classe del costruttore uguale alla classe di dichiarazione. So che eredita dalla classe genitore ma, sfortunatamente, dà un errore in fase di esecuzione.

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

Questo funziona correttamente.


3
dictionary["key"]non funzionerà - dovrebbe essere dictionary.get("key").
arshajii,

21
È vero, probabilmente è entrato un po 'di C # :)
SmartK8,

12

Usa l' interfaccia della mappa e un'implementazione come HashMap


1
Un link a una soluzione è il benvenuto, ma assicurati che la tua risposta sia utile senza di essa: aggiungi un contesto attorno al link in modo che i tuoi colleghi utenti abbiano qualche idea di cosa sia e perché sia ​​lì, quindi cita la parte più pertinente della pagina che ' re collegamento a nel caso in cui la pagina di destinazione non sia disponibile. Le risposte che sono poco più di un collegamento possono essere eliminate.
FelixSFD

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.