Diferença entre hashmap e map em Java

Mohammad Irfan 12 outubro 2023
  1. A interface Map em Java
  2. A classe HashMap em Java
  3. Use uma referência de Map para reter objetos em Java
  4. Use uma referência de Map para reter objetos em Java
Diferença entre hashmap e map em Java

Este tutorial apresenta as principais diferenças entre Map e HashMap em Java.

Em Java, Map é uma interface usada para armazenar dados em um par chave-valor, enquanto HashMap é a classe de implementação da interface Map. Java tem várias classes (TreeHashMap, LinkedHashMap) que implementam a interface Map para armazenar dados em um par de valor-chave. Vamos ver alguns exemplos.

A interface Map em Java

A interface Map sozinha não pode ser usada para armazenar dados, mas podemos criar um objeto de suas classes de implementação e então usar a referência Map para armazenar o objeto. Aqui, usamos a classe HashMap para armazenar dados e a interface Map para armazenar a referência desta classe. Veja o exemplo abaixo.

import java.util.HashMap;
import java.util.Map;

public class SimpleTesting {
  public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("One", 1);
    map.put("Two", 2);
    map.put("Three", 3);
    System.out.println(map);
  }
}

Resultado:

{One=1, Two=2, Three=3}

A classe HashMap em Java

HashMap é uma classe de implementação da interface Map. Portanto, podemos usá-lo para criar uma coleção de pares de valores-chave. Veja o exemplo abaixo.

import java.util.HashMap;

public class SimpleTesting {
  public static void main(String[] args) {
    HashMap<String, Integer> map = new HashMap<>();
    map.put("One", 1);
    map.put("Two", 2);
    map.put("Three", 3);
    System.out.println(map);
  }
}

Resultado:

{One=1, Two=2, Three=3}

Use uma referência de Map para reter objetos em Java

Visto que Map é uma interface, podemos usá-lo para manter a referência de suas classes de implementação, como HashMap, TreeMap, etc. Podemos manter um objeto TreeMap ou HashMap na interface Map. Veja o exemplo abaixo.

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;

public class SimpleTesting {
  public static void main(String[] args) {
    Map<String, Integer> map = new HashMap<>();
    map.put("One", 1);
    map.put("Two", 2);
    map.put("Three", 3);
    System.out.println(map);
    Map<String, Integer> tmap = new TreeMap<>(map);
    System.out.println(tmap);
  }
}

Resultado:

{One=1, Two=2, Three=3}
{One=1, Three=3, Two=2}

Use uma referência de Map para reter objetos em Java

É um exemplo importante de uso da referência Map ao trabalhar com suas classes de implementação. Veja, temos um método que recebe um objeto Map como argumento. Assim, no momento da chamada, podemos passar o objeto de qualquer classe como HashMap ou HashTable. Veja o exemplo abaixo.

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;

public class SimpleTesting {
  static void printMap(Map<String, Integer> map) {
    for (String key : map.keySet()) {
      System.out.println(key + ":" + map.get(key));
    }
  }
  public static void main(String[] args) {
    HashMap<String, Integer> hashmap = new HashMap<>();
    hashmap.put("One", 1);
    hashmap.put("Two", 2);
    hashmap.put("Three", 3);
    printMap(hashmap);
    TreeMap<String, Integer> tmap = new TreeMap<>(hashmap);
    printMap(tmap);
    LinkedHashMap<String, Integer> lmap = new LinkedHashMap<>(hashmap);
    printMap(lmap);
  }
}

Execute o código conforme abaixo.

Java SimpleTesting 10 20

Resultado:

10
20

Artigo relacionado - Java Map

Artigo relacionado - Java HashMap