HOWTO · Java

Filtrado de map en Java

Cómo filtrar un valor de un map en Java.

Aprenderemos a filtrar los valores del map en el lenguaje de programación Java. Hay dos métodos a través de los cuales puede realizar esta tarea. Echemos un vistazo a ellos.

Filtrado de map en Java

Los dos métodos que podemos usar para filtrar un map son entrySet() y getKey(). En el primer método, entrySet(), filtramos el map usando valores.

Usamos el par clave-valor completo en el segundo método, getKey(). Los métodos son algo complejos e involucran múltiples conversiones.

entrySet()

El método entryset() devuelve un valor. Podemos insertar un valor y verificar si ese valor está presente en un map o no. Mira el siguiente código.

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
  public static void main(String[] args) {
    String result = "";
    Map<Integer, String> Country = new HashMap<>();
    Country.put(1, "Canada"); // Inserting Value
    Country.put(2, "UnitedStates"); // Inserting Value
    Country.put(3, "UnitedKingdom"); // Inserting Value
    Country.put(4, "Argentina"); // Inserting Value

    // Map -> Stream -> Filter -> String   //Filter Using Map Value
    result = Country.entrySet()
                 .stream()
                 .filter(map -> "Argentina".equals(map.getValue()))
                 .map(map -> map.getValue())
                 .collect(Collectors.joining());
    System.out.println("Filtered Value Is ::" + result);
  }
}

Producción :

Filtered Value Is ::Argentina

La línea de código que filtra un valor es bastante larga. Como se mencionó anteriormente, convertimos los valores de un Map en un Stream. Luego, filtramos ese flujo y almacenamos el valor filtrado dentro de una cadena: el método stream convierte el conjunto en flujo. El método filter filtrará el valor del map.

getKey()

El método getKey() devuelve el par clave-valor completo. En lugar de hacer coincidir un valor, sacamos el valor usando su clave. El par clave-valor filtrado completo se almacena dentro de otro map y luego se imprime. Mira el siguiente código.

import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
  public static void main(String[] args) {
    String result = "";
    Map<Integer, String> Country = new HashMap<>();
    Country.put(1, "Canada"); // Inseting Value
    Country.put(2, "UnitedStates"); // Inserting Value
    Country.put(3, "UnitedKingdom"); // Inserting Value
    Country.put(4, "Argentina"); // Inserting Value

    // Filter Using Map Value
    Map<Integer, String> pair =
        Country.entrySet()
            .stream()
            .filter(map -> map.getKey().intValue() == 1)
            .collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));
    System.out.println("Pair Is : " + pair);
  }
}

Producción :

Pair Is : {1=Canada}

Para tener una comprensión concreta de los conceptos, debe visitar los siguientes enlaces.

Aprende más sobre Streams aquí y aprende más sobre Maps aquí.