¿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?


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

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


3
dictionary["key"]no funcionará, debería serlo dictionary.get("key").
arshajii

21
Es cierto, probablemente C # se deslizó :)
SmartK8

12

Utilice la interfaz del mapa y una implementación como HashMap


1
Un enlace a una solución es bienvenido, pero asegúrese de que su respuesta sea útil sin él: agregue contexto alrededor del enlace para que sus otros usuarios tengan una idea de qué es y por qué está allí, luego cite la parte más relevante de la página volver a vincular en caso de que la página de destino no esté disponible. Se pueden eliminar las respuestas que son poco más que un enlace.
FelixSFD

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.