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}