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