beginnersbook.com

  • Home
  • All Tutorials
    • Learn Servlet
    • Learn JSP
    • Learn JSTL
    • Learn C
    • Learn C++
    • Learn MongoDB
    • Learn XML
    • Learn Python
    • Learn Perl
    • Learn Kotlin
  • Core Java
  • OOPs
  • Collections
  • Java I/O
  • JSON
  • DBMS

Java 8 – Filter a Map by keys and values

By Chaitanya Singh | Filed Under: Java 8 Features

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 Cancel reply

Your email address will not be published. Required fields are marked *

Java 8 Features

  • Lambda Expressions
  • Method References
  • Functional Interfaces
  • Java 8 Interface changes
  • Java 8 Stream API
  • Stream Filter
  • Java forEach()
  • Collectors Class
  • StringJoiner Class
  • Optional Class
  • Arrays.parallelSort()

Recently Added..

  • JSON Tutorial
  • Java Regular Expressions Tutorial
  • Java Enum Tutorial
  • Java Annotations Tutorial

Copyright © 2012 – 2021 BeginnersBook . Privacy Policy . Sitemap