Olá, minha dúvida é bem básica: qual é a diferença entre as classes Map e HashMap?
Olá,
Map é uma interface, não uma classe! O mapa é uma estrutura de dados que permite que você ligue cada valor a uma chave. Assim podemos acessar o valor pela chave.
A idéia de ser uma interface é poder trocar de implementação se muito impacto, facilitando a manutenção.
O HashMap, que na verdade herda de AbstractMap, que implementa a interface Map (é um padrão de projeto essa arquitetura, cujo nome não me lembro agora ), é um tipo de Map, pois ele realiza a interface através do AbstractMap. A característica do HashMap é que ele não autoriza valores duplicados de chave, sendo que o último substitui o já adicionado.
Basicamente usamos assim:
Map map = new HashMap();
map.put("elemento1", 1); //elemento1 é a cahve (key) e 1 o valor associado a ela
map.get("elemento1"); //retorna 1
Temos também os genéricos(generics) que permitem “tipar” o mapa sem uma classe específica. Assim evitamos erros em tempo de execução e corrigimos os mesmo enquanto compilamos. (se você tentar usar uma String em um lugar cujo genérico diz para ele ser Inteiro, por exemplo)
É mais ou menos isso, me corrijam se eu estiver errado, correria aqui!
Map não é classe, é interface. Ela define o contrato que um mapa, aka dicionário ou array associativo, deve seguir.
HashMap é uma mapa que usa códigos de hash para organizar os objetos dentro dele.
[]´s
Map é uma interface, não uma classe.
Ela é implementada pelas classes HashMap e TreeMap, entre outras.
Usualmente usa-se a interface para declarar variáveis e parâmetros.
Map<String, String> m = new HashMap<String, String>();
Se precisar de uma versão “ordenada” do Map, então use a subinterface SortedMap.
SortedMap<String, String> m = new TreeMap<String, String>();