¿Cómo se crea un diccionario en Java? [cerrado]

236

Estoy tratando de implementar un diccionario (como en el libro físico). Tengo una lista de palabras y sus significados.

¿Qué tipo / estructura de datos proporciona Java para almacenar una lista de palabras y sus significados como pares clave / valor?

¿Cómo, dada una clave, puedo encontrar y devolver el valor?

usuario1849819
fuente
24
Bueno, en el espíritu de centrarme en la pregunta, no en el usuario, estoy votando para reabrir. Estoy seguro de que este usuario ya ha terminado el curso de todos modos. ;) Es un duplicado de stackoverflow.com/questions/1540673/… , pero creo que las respuestas aquí son mejores.
Adi Inbar el

Respuestas:

313

Querrás un Map<String, String>. Las clases que implementan la Mapinterfaz incluyen (pero no están limitadas a):

Cada uno está diseñado / optimizado para ciertas situaciones (vaya a sus documentos respectivos para obtener más información). HashMapes probablemente el más común; el go-to default.

Por ejemplo (usando a HashMap):

Map<String, String> map = new HashMap<String, String>();
map.put("dog", "type of animal");
System.out.println(map.get("dog"));
tipo de animal
arshajii
fuente
1
@Cruncher También implementa Map(verifique el javadoc)
arshajii
1
@arshajii Tengo una duda de que asignamos manualmente todas las cadenas en el diccionario o puedo decir que almacenamos manualmente el significado de todas las palabras. Entonces, mi pregunta es, ¿hay alguna forma como los archivos db (dump) del diccionario para obtener las palabras y su significado / definición para que podamos evitar agregar el significado de cada palabra manualmente
Vighanesh Gursale
@VighaneshGursale Deberá usar un método put para construir su estructura de datos durante la ejecución. Piense en un comando de poner como leer el archivo del disco y colocarlo en la memoria (RAM) para que pueda trabajar con él. Si tiene un archivo que desea cargar como una estructura de datos en la carga automática, necesitaría buscar en Java Spring, pero es complejo.
Dan Ciborowski - MSFT
55
Por cierto, en realidad no es necesario incluir <String, String> la segunda vez. Puedes hacerloMap<String, String> map = new HashMap<>();
Samuel Noyes, el
Olvidó mencionar ConcurrentHashMap, que es más preferible usar sobre Hashtable
Arsenius
80

Esto crea un diccionario de texto (cadena):

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

luego lo usas como:

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

Funciona pero da un error, necesita mantener la clase de constructor igual que la clase de declaración Sé que hereda de la clase padre pero, desafortunadamente, da un error en tiempo de ejecución.

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

Esto funciona correctamente

SmartK8
fuente
3
dictionary["key"]no funcionará, debería serlo dictionary.get("key").
arshajii
21
Es cierto, probablemente C # se deslizó :)
SmartK8