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?


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

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.


3
dictionary["key"]não vai funcionar - deveria ser dictionary.get("key").
arshajii

21
É verdade, provavelmente algum C # escorregou em :)
SmartK8

12

Use a interface Map e uma implementação como HashMap


1
Um link para uma solução é bem-vindo, mas garanta que sua resposta seja útil sem ela: adicione contexto ao link para que seus colegas usuários tenham uma idéia do que é e por que está lá, depois cite a parte mais relevante da página que você ' reencaminhando para o caso de a página de destino não estar disponível. Respostas que são pouco mais que um link podem ser excluídas.
precisa saber é o seguinte

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.