English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial Básico de Java

Controle de fluxo do Java

Array do Java

Java orientado a objetos (I)

Java orientado a objetos (II)

Java orientado a objetos (III)

Tratamento de Exceções Java

Lista List do Java

Fila Queue do Java

Conjunto Map do Java

Conjunto Set do Java

Entrada e saída do Java (I/O)

Reader do Java/Writer

Outros tópicos do Java

Uso e exemplo do computeIfAbsent() do Java HashMap

Métodos HashMap Java

O método computeIfAbsent() do Java HashMap calcula um novo valor, se a chave não estiver associada a nenhum valor no mapeamento de hash, associando-a à chave especificada.

A sintaxe do método computeIfAbsent() é:

hashmap.computeIfAbsent(K key, Function remappingFunction)

Parâmetros do computeIfAbsent()

O método computeIfAbsent() tem dois parâmetros:

  • key - 与计算值关联的键

  • Com a chave associada ao valor calculado - remappingFunctionChavePara a chave especificada

NotarCalcular a função do novo valor

:A função de remapeamento não pode aceitar dois parâmetros.

  • computeIfAbsent() retorna o valor

  • É a função que calcula o novo valor para a chave especificada

Notar:Se o resultado da função de remapeamento for null, a chave especificadaChavedo mapeamento.

Exemplo1:Mapeamento do Java HashMap computeIfAbsent()

import java.util.HashMap;
class Main {
  public static void main(String[] args) {
    // Criar HashMap
    HashMap<String, Integer> prices = new HashMap<>();
    // Inserir entrada no HashMap
    prices.put("Shoes", 200);
    prices.put("Bag", 300);
    prices.put("Pant", 150);
    System.out.println("HashMap: "} + prices);
    // Calcular o valor do camiseta
    int shirtPrice = prices.computeIfAbsent("Shirt", (key -> 280);
    System.out.println("Preço do camiseta: "} + shirtPrice);
    // Imprimir atualização do HashMap
    System.out.println("HashMap atualizado: "); + prices);
  }
}

Resultados de Saída

HashMap: {Pant=150, Bag=300, Shoes=200}
Preço do camiseta: 280
HashMap atualizado: {Pant=150, Shirt=280, Bag=300, Shoes=200}

No exemplo acima, criamos um mapeamento chamado prices. Observe a expressão

prices.computeIfAbsent("Shirt", (key -> 280)

Aqui,

  • key -> 280 - É uma expressão lambda. Ela retorna o valor280. Para obter mais informações sobre expressões lambda, acesseExpressões Lambda Java.

  • prices.computeIfAbsent() -  Associar o novo valor retornado pela expressão lambda ao mapeamento de Shirt. Isso é possível porque Shirt ainda não está mapeado a nenhum valor no hashmap.

Exemplo2:Se a chave já existir, usar computeIfAbsent()

import java.util.HashMap;
class Main {
  public static void main(String[] args) {
    // Criar HashMap
    HashMap<String, Integer> prices = new HashMap<>();
    // Inserir entrada no HashMap
    prices.put("Shoes", 180);
    prices.put("Bag", 300);
    prices.put("Pant", 150);
    System.out.println("HashMap: "} + prices);
    //A mapeamento de Shoes já existe
    //Não calcular o novo valor de Shoes
    int shoePrice = prices.computeIfAbsent("Shoes", (key) -> 280);
    System.out.println("Preço do sapato: "} + shoePrice);
    //Imprimir o HashMap atualizado
    System.out.println("HashMap atualizado: "); + prices);
  }
}

Resultados de Saída

HashMap: {Pant=150, Bag=300, Shoes=180}
Preço do sapato: 180
HashMap atualizado: {Pant=150, Bag=300, Shoes=180}

No exemplo acima, o mapeamento de Shoes já existe no mapeamento hash. Portanto, o método computeIfAbsent() não calculará um novo valor para Shoes.

Leia mais

Métodos HashMap Java