Como você cria um dicionário em Java? [fechadas]

236

Estou tentando implementar um dicionário (como no livro físico). Eu tenho uma lista de palavras e seus significados.

Que estrutura / tipo de dados o Java fornece para armazenar uma lista de palavras e seus significados como pares de chave / valor.

Como, dada uma chave, posso encontrar e retornar o valor?

user1849819
fonte
24
Bem, com o espírito de me concentrar na questão, não no usuário, estou votando para reabrir. Tenho certeza de que esse usuário já terminou o curso agora. ;) É uma duplicata do stackoverflow.com/questions/1540673/… , mas acho que as respostas aqui são melhores.
Adi Inbar 24/03

Respostas:

313

Você vai querer um Map<String, String>. As classes que implementam a Mapinterface incluem (mas não estão limitadas a):

Cada um foi projetado / otimizado para determinadas situações (consulte os respectivos documentos para obter mais informações). HashMapé provavelmente o mais comum; o padrão inicial.

Por exemplo (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
fonte
1
@Cruncher Também implementos Map(verifique o javadoc)
arshajii
1
@arshajii Tenho uma dúvida de que mapeamos manualmente todas as seqüências de caracteres no dicionário ou posso dizer que armazenamos manualmente o significado de todas as palavras. Então, minha pergunta é, existe alguma maneira como os arquivos db (despejo) de dicionário para buscar as palavras e seus significados / definição para que possamos evitar adicionar o significado de cada palavra manualmente
Vighanesh Gursale
@VighaneshGursale Você precisará usar um método put para construir sua estrutura de dados durante a execução. Pense em um comando put como ler o arquivo do disco e colocá-lo na memória (ram) para poder trabalhar com ele. Se você tem um arquivo no qual deseja carregar como uma estrutura de dados no load auto, você precisa procurar no java spring, mas é complexo.
Dan Ciborowski - MSFT 14/02
5
A propósito, você não precisa incluir <String, String> na segunda vez. Você pode apenas fazerMap<String, String> map = new HashMap<>();
Samuel Noyes
Você esqueceu de mencionar o ConcurrentHashMap, que é preferível usar sobre o Hashtable
Arsenius 29/17
80

Isso cria um dicionário de texto (string):

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

você o usa como:

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

Funciona, mas fornece um erro: você precisa manter a classe do construtor igual à da declaração. Eu sei que ele herda da classe pai, mas, infelizmente, dá um erro no tempo de execução.

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

Isso funciona corretamente.

SmartK8
fonte
3
dictionary["key"]não vai funcionar - deveria ser dictionary.get("key").
arshajii
21
É verdade, provavelmente algum C # escorregou em :)
SmartK8