In the previous tutorial we learned about Java Stream Filter. In this guide, we will see how to use Stream filter() method to filter a Map by keys and Values.
Java 8 – Filter Map by Keys
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); } }
Output:
Result: {22=Orange, 11=Apple}
Java 8 – Filter Map by Values
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); } }
Output:
Result: {22=Orange}
Java 8 – Filter Map by both Keys and Values
In this example we are filtering a Map by keys and values both. When we filter a Map like this we are joining both the conditions by AND (&&) logical operator. You can also place both the conditions in the single filter() method and join them using any logical operator such as OR (||), AND(&&) or 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); } }
Output:
Result: {1=ABC}
Leave a Reply