Propiedades del método computeIfPresent(Key, BiFunction) en Java con ejemplos

El método computeIfPresent(Key, BiFunction) de la clase de propiedades que le permite calcular el valor de una asignación para una clave específica si la clave ya está asociada con un valor (o está asignada a un valor nulo).

  • Si la función de asignación de este método devuelve un valor nulo, se elimina la asignación.
  • Si la función de reasignación arroja una excepción, la excepción se vuelve a generar y la asignación no se modifica.
  • Durante el cálculo, no se permite la modificación de este mapa utilizando este método.
  • Este método generará una ConcurrentModificationException si la función de reasignación modificó este mapa durante el cálculo.

Sintaxis:

public Object computeIfPresent?(Object key,
                              BiFunction remappingFunction)

Parámetros: Este método acepta dos parámetros:

  • key : clave con la que se va a asociar el valor.
  • remappingFunction : función para realizar la operación sobre el valor.

Devoluciones: este método devuelve un nuevo valor reasignado asociado con la clave especificada, o nulo si la asignación devuelve nulo .

Excepción: este método lanza ConcurrentModificationException si se detecta que la función de reasignación modificó este mapa.

Los siguientes programas ilustran el método computeIfPresent(Key, BiFunction):

Programa 1:

// Java program to demonstrate
// computeIfPresent(Key, BiFunction) method.
  
import java.util.*;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // Create a properties and add some values
        Properties properties = new Properties();
        properties.put("Pen", 10);
        properties.put("Book", 500);
        properties.put("Clothes", 400);
        properties.put("Mobile", 5000);
  
        // print Properties details
        System.out.println("Current Properties: "
                           + properties.toString());
  
        // provide new value for keys which is present
        // using computeIfPresent method
        properties.computeIfPresent("Pen", (key, val)
                                               -> 600);
        properties.computeIfPresent("Book", (key, val)
                                                -> 800);
  
        // print new mapping
        System.out.println("New Properties: "
                           + properties.toString());
    }
}
Producción:

Current Properties: {Book=500, Mobile=5000, Pen=10, Clothes=400}
New Properties: {Book=800, Mobile=5000, Pen=600, Clothes=400}

Programa 2:

// Java program to demonstrate
// computeIfPresent(Key, BiFunction) method.
  
import java.util.*;
  
public class GFG {
  
    // Main method
    public static void main(String[] args)
    {
  
        // Create a properties and add some values
        Properties properties = new Properties();
  
        properties.put(1, "100RS");
        properties.put(2, "500RS");
        properties.put(3, "1000RS");
  
        // print Properties details
        System.out.println("Current Properties: "
                           + properties.toString());
  
        // provide new value for key which is present
        // using computeIfPresent method
        properties.computeIfPresent(3, (key, val)
                                           -> "00RS");
  
        // this will not effect anything
        // because key 4 is absent
        properties.computeIfPresent(4, (key, val)
                                           -> "$");
  
        // print new mapping
        System.out.println("New Properties: "
                           + properties.toString());
    }
}
Producción:

Current Properties: {3=1000RS, 2=500RS, 1=100RS}
New Properties: {3=00RS, 2=500RS, 1=100RS}

Referencias: https://docs.oracle.com/javase/9/docs/api/java/util/Properties.html#computeIfPresent-java.lang.Object-java.util.function.BiFunction-

Publicación traducida automáticamente

Artículo escrito por Kirti_Mangal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *