En el tutorial anterior aprendimos sobre Java Stream Filter. En esta guía veremos cómo usar el método Stream filter () para filtrar un mapa por claves y valores.

Java 8 – Filtro de mapa por claves

import java.util.Map;
import java.util.HashMap;
import java.util.stream.Collectors;
public class Example {
   public static void main(String[] args) {
      Map<Integer, String> hmap = new HashMap<Integer, String>(); 
      hmap.put(11, "Apple"); 
      hmap.put(22, "Orange"); 
      hmap.put(33, "Kiwi");  
      hmap.put(44, "Banana"); 

      Map<Integer, String> result = hmap.entrySet() 
          .stream() 
          .filter(map -> map.getKey().intValue() <= 22) 
          .collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));  
  
      System.out.println("Result: " + result);
   }
}

Producción:

Result: {22=Orange, 11=Apple}

Java 8: filtro de mapas por valores

import java.util.Map;
import java.util.HashMap;
import java.util.stream.Collectors;
public class Example {
   public static void main(String[] args) {
      Map<Integer, String> hmap = new HashMap<Integer, String>();
      hmap.put(11, "Apple");
      hmap.put(22, "Orange");
      hmap.put(33, "Kiwi");
      hmap.put(44, "Banana");

      Map<Integer, String> result = hmap.entrySet()
      .stream()
      .filter(map -> "Orange".equals(map.getValue()))
      .collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));

      System.out.println("Result: " + result);
   }
}

Producción:

Result: {22=Orange}

Java 8: filtro de mapa para claves y valores

En este ejemplo, estamos filtrando un mapa por claves y valores. Cuando filtramos un mapa como este, combinamos ambas condiciones usando el operador lógico AND (&&). También puede poner ambas condiciones en el método de filtro único () y combinarlas usando cualquier operador lógico como OR (||), AND (&&) o NOT (!).

import java.util.Map;
import java.util.HashMap;
import java.util.stream.Collectors;
public class Example {
   public static void main(String[] args) {
      Map<Integer, String> hmap = new HashMap<Integer, String>();
      hmap.put(1, "ABC");
      hmap.put(2, "XCB");
      hmap.put(3, "ABB");
      hmap.put(4, "ZIO");

      Map<Integer, String> result = hmap.entrySet()
         .stream()
         .filter(p -> p.getKey().intValue() <= 2) //filter by key
         .filter(map -> map.getValue().startsWith("A")) //filter by value
         .collect(Collectors.toMap(map -> map.getKey(), map -> map.getValue()));

     System.out.println("Result: " + result);
   }
}

Producción:

Result: {1=ABC}
leer  Java 8: clase Stream Collectors con ejemplos

Por avivcas

Deja una respuesta

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