Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> Java

Java HashMap

Java HashMap


Neste tutorial, aprenderemos sobre a classe Java HashMap e suas diversas operações com a ajuda de exemplos.

O HashMap A classe da estrutura de coleções Java fornece a funcionalidade da estrutura de dados da tabela de hash.

Ele armazena elementos em chave/valor pares. Aqui, chaves são identificadores exclusivos usados ​​para associar cada valor em um mapa.

O HashMap A classe implementa a interface Map.


Criar um HashMap


Para criar um mapa de hash, devemos importar o java.util.HashMap pacote primeiro. Depois de importar o pacote, veja como podemos criar hashmaps em Java.
// hashMap creation with 8 capacity and 0.6 load factor
HashMap<K, V> numbers = new HashMap<>();

No código acima, criamos um hashmap chamado numbers . Aqui, K representa o tipo de chave e V representa o tipo de valores. Por exemplo,
HashMap<String, Integer> numbers = new HashMap<>();

Aqui, o tipo de chaves é String e o tipo de valores é Integer .

Exemplo 1:Criar HashMap em Java

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> languages = new HashMap<>();

    // add elements to hashmap
    languages.put("Java", 8);
    languages.put("JavaScript", 1);
    languages.put("Python", 3);
    System.out.println("HashMap: " + languages);
  }
}

Saída
HashMap: {Java=8, JavaScript=1, Python=3}

No exemplo acima, criamos um HashMap chamados idiomas .

Aqui, usamos o put() método para adicionar elementos ao hashmap. Aprenderemos mais sobre o put() método mais adiante neste tutorial.

Operações básicas no Java HashMap


O HashMap A classe fornece vários métodos para realizar diferentes operações em hashmaps. Veremos algumas operações de arraylist comumente usadas neste tutorial:

1. Adicionar elementos a um HashMap


Para adicionar um único elemento ao hashmap, usamos o put() método do HashMap classe. Por exemplo,
import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> numbers = new HashMap<>();

    System.out.println("Initial HashMap: " + numbers);
    // put() method to add elements
    numbers.put("One", 1);
    numbers.put("Two", 2);
    numbers.put("Three", 3);
    System.out.println("HashMap after put(): " + numbers);
  }
}

Saída
Initial HashMap: {}
HashMap after put(): {One=1, Two=2, Three=3}

No exemplo acima, criamos um HashMap chamados números . Aqui, usamos o put() método para adicionar elementos aos números.

Observe a afirmação,
numbers.put("One", 1);

Aqui, estamos passando o String valor Um como a chave e Integer valor 1 como o valor para put() método.

Leituras recomendadas

2. Acessar Elementos do HashMap


Podemos usar o get() método para acessar o valor do hashmap. Por exemplo,
import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // get() method to get value
    String value = languages.get(1);
    System.out.println("Value at index 1: " + value);
  }
}

Saída
HashMap: {1=Java, 2=Python, 3=JavaScript}
Value at index 1: Java

No exemplo acima, observe a expressão,
languages.get(1);

Aqui, o get() método pega a chave como seu argumento e retorna o valor correspondente associado à chave.

Também podemos acessar as chaves , valores e chave/valor pares do hashmap como visualizações definidas usando keySet() , values() e entrySet() métodos respectivamente. Por exemplo,
import java.util.HashMap;

class Main {
  public static void main(String[] args) {
    HashMap<Integer, String> languages = new HashMap<>();

    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // return set view of keys
    // using keySet()
    System.out.println("Keys: " + languages.keySet());

    // return set view of values
    // using values()
    System.out.println("Values: " + languages.values());

    // return set view of key/value pairs
    // using entrySet()
    System.out.println("Key/Value mappings: " + languages.entrySet());
  }
}

Saída
HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: [1, 2, 3]
Values: [Java, Python, JavaScript]
Key/Value mappings: [1=Java, 2=Python, 3=JavaScript]



No exemplo acima, criamos um hashmap chamado languages . Aqui, estamos acessando as chaves , valores e chave/valor mapeamentos do hashmap.

Leituras recomendadas

3. Alterar valor do HashMap


Podemos usar o replace() método para alterar o valor associado a uma chave em um hashmap. Por exemplo,
import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("Original HashMap: " + languages);

    // change element with key 2
    languages.replace(2, "C++");
    System.out.println("HashMap using replace(): " + languages);
  }
}

Saída
Original HashMap: {1=Java, 2=Python, 3=JavaScript}
HashMap using replace(): {1=Java, 2=C++, 3=JavaScript}

No exemplo acima, criamos um hashmap chamado languages . Observe a expressão,
languages.replace(2, "C++");

Aqui, estamos alterando o valor referido pela chave 2 com o novo valor C++ .

O HashMap também fornece algumas variações do replace() método. Para saber mais, acesse

4. Remover elementos do HashMap


Para remover elementos de um hashmap, podemos usar o método remove(). Por exemplo,
import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // remove element associated with key 2
    String value = languages.remove(2);
    System.out.println("Removed value: " + value);

    System.out.println("Updated HashMap: " + languages);
  }
}

Saída
HashMap: {1=Java, 2=Python, 3=JavaScript}
Removed value: Python
Updated HashMap: {1=Java, 3=JavaScript}

Aqui, o remove() método pega a chave como seu parâmetro. Em seguida, ele retorna o valor associado à chave e remove a entrada .

Também podemos remover a entrada apenas sob certas condições. Por exemplo,
remove(2, "C++");

Aqui, o remove() O método remove apenas a entrada se a chave 2 está associado ao valor C++ . Desde 2 não está associado a C++ , ele não remove a entrada.

Para saber mais, visite Java HashMap remove().

Outros métodos de HashMap

Método Descrição
limpar() remove todos os mapeamentos do HashMap
computar() computa um novo valor para a chave especificada
computarSeAusente() computa o valor se um mapeamento para a chave não estiver presente
computarIfPresent() computa um valor para mapeamento se a chave estiver presente
mesclar() mescla o mapeamento especificado ao HashMap
clone() faz a cópia do HashMap
contémKey() verifica se a chave especificada está presente no Hashmap
contémValue() verifica se Hashmap contém o valor especificado
tamanho() retorna o número de itens em HashMap
está vazio() verifica se o Hashmap está vazio

Iterar por meio de um HashMap


Para percorrer cada entrada do hashmap, podemos usar Java for-each loop. Podemos iterar por meio de somente chaves , somente valores e mapeamento de chave/valor . Por exemplo,
import java.util.HashMap;
import java.util.Map.Entry;

class Main {
  public static void main(String[] args) {

    // create a HashMap
    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // iterate through keys only
    System.out.print("Keys: ");
    for (Integer key : languages.keySet()) {
      System.out.print(key);
      System.out.print(", ");
    }

    // iterate through values only
    System.out.print("\nValues: ");
    for (String value : languages.values()) {
      System.out.print(value);
      System.out.print(", ");
    }
    
    // iterate through key/value entries
    System.out.print("\nEntries: ");
    for (Entry<Integer, String> entry : languages.entrySet()) {
      System.out.print(entry);
      System.out.print(", ");
    }
  }
}

Saída
HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: 1, 2, 3,
Values: Java, Python, JavaScript,        
Entries: 1=Java, 2=Python, 3=JavaScript,

Observe que usamos o Map.Entry no exemplo acima. É a classe aninhada do Map interface que retorna uma visão (elementos) do mapa.

Primeiro precisamos importar o java.util.Map.Entry pacote para usar esta classe.

Essa classe aninhada retorna uma visualização (elementos) do mapa.

Criando HashMap de outros mapas


Em Java, também podemos criar um hashmap a partir de outros mapas. Por exemplo,
import java.util.HashMap;
import java.util.TreeMap;

class Main {
  public static void main(String[] args) {

    // create a treemap
    TreeMap<String, Integer> evenNumbers = new TreeMap<>();
    evenNumbers.put("Two", 2);
    evenNumbers.put("Four", 4);
    System.out.println("TreeMap: " + evenNumbers);

    // create hashmap from the treemap
    HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
    numbers.put("Three", 3);
    System.out.println("HashMap: " + numbers);
  }
}

Saída
TreeMap: {Four=4, Two=2}
HashMap: {Two=2, Three=3, Four=4}

No exemplo acima, criamos um TreeMap chamado evenNumbers . Observe a expressão,
numbers = new HashMap<>(evenNumbers)

Aqui, estamos criando um HashMap números nomeados usando o TreeMap . Para saber mais sobre treemap, visite Java TreeMap.

Observação :Ao criar um mapa de hash, podemos incluir parâmetros opcionais:capacidade e fator de carga . Por exemplo,
HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

Aqui,

Se os parâmetros opcionais não forem usados, a capacidade padrão será 16 e o fator de carga padrão será 0,75 .

Java

  1. Operadores Java
  2. Comentários Java
  3. Java para cada loop
  4. Strings Java
  5. Interface Java
  6. Classe anônima Java
  7. Java try-with-resources
  8. Anotações Java
  9. Asserções Java
  10. Vetor Java