HashMap em Java
Crie um HashMap<String, String> chamado scores, chame scores.put("oak", "leaf"); e depois imprima scores.get("oak"). Compile Desk.java e execute java Desk. A tela deve mostrar uma linha: leaf. A chave "oak" encontra o valor "leaf". Guardar um par e lê-lo de volta pela chave é o que esta página ensina.
Uma chave que encontra um valor
Na página list-methods você chegava aos valores pelo número da posição: get(0). Um HashMap chega a um valor por uma chave que você escolhe. Você escreve o par com put. Você lê o valor com get e a mesma chave. Não há posição zero no caminho didático desta lição — a chave é o rótulo.
Abra Desk.java. Mantenha o nome da classe pública Desk para bater com o nome do arquivo. Apague linhas restantes de ArrayList, tags.get(0), tags.size(), tags.remove(0) e qualquer demo Rack ou Shelf. Elas pertencem às páginas de lista. Apague também qualquer Scanner, nextLine ou leitura de teclado. O programa não deve esperar digitação.
Perto do topo, acima de public class Desk, escreva:
import java.util.HashMap;
Esse import traz o tipo HashMap ao alcance do nome curto. Sem ele, javac não vê o nome curto HashMap nesta página. Escreva java.util e HashMap com cuidado. Não invente import java.util.*; como exigência aqui — um import exato basta.
Dentro de main, crie o mapa:
HashMap<String, String> scores = new HashMap<String, String>();
O primeiro tipo nos ângulos é o tipo da chave. O segundo é o tipo do valor. Ambos são String nesta página para a demo ficar com palavras. O nome scores é o que você mantém no arquivo de ensino. A chamada new HashMap<String, String>() constrói um mapa vazio. Nesse momento ele não guarda nenhum par.
Coloque oak para leaf, depois leia oak
Chame scores.put("oak", "leaf"); na própria linha. A primeira palavra entre aspas é a chave. A segunda é o valor. A ordem dentro de put importa: chave primeiro, valor depois. Não troque no arquivo que você guarda.
Depois escreva:
System.out.println(scores.get("oak"));
Passe a mesma chave "oak" para get. Não passe "leaf" como argumento de get no arquivo guardado — get pede a chave, não o valor. Não escreva scores.get(0) — essa é a forma de lista do Rack, não a forma de mapa aqui. Salve antes de compilar.
import java.util.HashMap;
public class Desk {
public static void main(String[] args) {
HashMap<String, String> scores = new HashMap<String, String>();
scores.put("oak", "leaf");
System.out.println(scores.get("oak"));
}
}
Da pasta que contém Desk.java, execute javac Desk.java. Quando parênteses, chaves, ângulos e ponto e vírgula batem, javac não escreve linha própria. Depois execute java Desk — não java Desk.java e não java HashMap. Tire o final .java do comando de execução. Inicie a classe que tem main.
O programa deve imprimir uma linha e parar: leaf. Não deve pedir que você digite. Se o terminal esperar entrada do teclado, ainda há uma chamada nextLine de um exercício antigo em algum arquivo. Apague essa chamada e mantenha a criação de HashMap, a linha put e System.out.println(scores.get("oak"));.
Percorra a execução uma vez. Java começa em Desk.main. O import já nomeou qual HashMap você quer. A linha new constrói um mapa vazio. put guarda o par oak → leaf. A chamada get("oak") devolve leaf. A linha de impressão escreve essa palavra. A tela mostra leaf. Nada mais deve imprimir. Se você vir oak, imprimiu a chave à mão ou usou o argumento get errado. Se vir 2 ou [pine], ainda roda um demo size ou remove do Rack — mude para java Desk.
Se javac disser que não encontra HashMap, a linha import falta, está errada ou está depois de public class Desk. Mova import java.util.HashMap; para cima da linha da classe. Se chamar get("oak") antes de qualquer put, a impressão pode mostrar null porque essa chave nunca foi guardada. Mantenha put antes de get nesta página. Se escrever scores.put(oak, leaf); sem aspas, javac trata as palavras como nomes que não existem. Mantenha as aspas em torno da chave e do valor.
Imprimir o mapa inteiro como segundo olhar
Um segundo arquivo Desk imprime o objeto mapa depois do mesmo put. Isso mostra a forma de par que Java usa quando você imprime o mapa em si.
import java.util.HashMap;
public class Desk {
public static void main(String[] args) {
HashMap<String, String> scores = new HashMap<String, String>();
scores.put("oak", "leaf");
System.out.println(scores);
}
}
Compile e execute esse segundo arquivo do mesmo jeito. A tela mostra {oak=leaf} — chave, sinal de igual, valor, dentro de chaves. Essa forma ajuda a confirmar que o par está no mapa. O caminho didático para a tela do quiz leaf continua sendo o primeiro arquivo com get("oak"). Use a impressão do mapa inteiro só para ver o par guardado. Não misture get(0) em nenhum arquivo Desk — mapas não usam números de posição de lista nesta página.
Se a tela mostrar [] ou [oak, pine], ainda roda um demo ArrayList. Fique com HashMap e java Desk.
Comparado com get de lista e com put
Na página list-methods, get(0) precisava de um índice de posição depois de add. Nesta página, get("oak") precisa da string da chave depois de put. Um arquivo Rack restante que só imprime tags.get(0) é outra lição. Para esta página mantenha em Desk as chamadas put("oak", "leaf") e get("oak").
Você pode guardar mais pares com mais chamadas put. Esta página guarda um par para a chave e o valor impresso ficarem fáceis de ver. Uma página depois — HashSet — guarda valores únicos sem uma história separada de par chave-valor. Fique aqui com put e get de HashMap.
Quando arquivos antigos Rack.java ou Shelf.java ainda estiverem por perto, deixe-os ou apague-os só se confundirem qual classe você executa. Execute java Desk depois de compilar o arquivo HashMap desta lição.
O que fica para HashSet
Esta página abre o armazenamento chave-valor com HashMap. A próxima página abre um conjunto de valores únicos com HashSet. Fique aqui com put e get no mapa. Não invente o add de set como exigência nesta página; o objetivo da lição é a chave que encontra o valor e a tela leaf.
Antes de HashSet
Você pode importar java.util.HashMap, criar HashMap<String, String> scores, chamar scores.put("oak", "leaf"); e depois imprimir scores.get("oak"). Compile Desk.java e execute java Desk. A tela mostra leaf. A chave encontrou o valor. A próxima página é HashSet, onde você guarda valores únicos sem emparelhar cada um a uma chave separada no caminho daquela lição.
Mantenha o import acima da classe. Mantenha put antes de get. Mantenha a chave "oak" igual nas duas chamadas. Esses três hábitos são o ponto de verificação desta página antes de seguir. Quando a tela mostrar leaf depois de get("oak"), o HashMap fez o trabalho desta lição e você está pronto para o próximo tema.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo