Java – map() and filter() methods

map():

  • It takes a lambda expression as its only argument, and uses it to change every individual element in the stream.
  • Its return value is a new Stream object containing the changed elements.

Creating a Stream:

List<Integer> myList = new ArrayList<Integer>();
myList.add(1);
myList.add(5);
myList.add(8);
Stream<Integer> myStream = myList.stream();

We can create streams for arrays as follows:

Integer[] myArray = {1, 5, 8};
Stream<Integer> myStream = Arrays.stream(myArray);

map to convert all elements in an array of strings to uppercase:

String[] myArray = new String[]{“harin”, “satya”, “annie”, “amar”};
Stream<String> myStream = Arrays.stream(myArray);
Stream<String> myNewStream = myStream.map(s -> s.toUpperCase());

To convert it into an array, you use its toArray method:

String[] myNewArray = myNewStream.toArray(String[]::new);

filter():

  • filter() method takes lambda expression as input and return boolean value.
  • If filter() method returns true, then the element enter into resultant stream.
  • filter() method returns stream after filtering the data.

Program to filter the Strings starts with “s” in a list:

import java.util.*;
import java.util.stream.*;
class Main
{
            public static void main(String[] args)
            {
                        List<String> list = new ArrayList<String>();
                        list.add(“Java”);
                        list.add(“JDBC”);
                        list.add(“Servlets”);
                        list.add(“JSP”);
                        list.add(“Spring”);
                        list.add(“Hibernate”);
 
                        Stream<String> st = list.stream();
                        Stream<String> res = st.filter(s->s.startsWith(“S”));
                        res.forEach(System.out::println);
            }
}

Write the above filtering logic in single line:

list.stream().filter(s->s.startsWith(“S”)).forEach(System.out::println);

Display string whose length is 4:

import java.util.*;
import java.util.stream.*;
class Main
{
            public static void main(String[] args)
            {
                        String[] arr = {“Java”, “JDBC”, “Servlets”, “JSP”, “Spring”};
                        List<String> list = new ArrayList<String>();
                        for(int i=0 ; i<arr.length ; i++)
                        {
                                    list.add(arr[i]);
                        }
                        list.stream().filter(s->s.length()==4).forEach(System.out::println);
            }
}

Program to display only even numbers in the list using stream api:

import java.util.*;
import java.util.stream.*;
class Main
{
            public static void main(String[] args) {
                        int[] arr = {5, 2, 8, 9, 3, 7, 1, 4, 6};
                        List<Integer> list = new ArrayList<Integer>();
                        for(int x : arr){
                                    list.add(x);
                        }
                        System.out.println(“List is : ” + list);
                        System.out.println(“Even numbers list is : “);
                        list.stream().filter(s->s%2==0).forEach(System.out::println);
            }
}
Scroll to Top