$show=/label

Java 8 - Difference between Stream API map() and filter() methods

SHARE:

A quick and practical guide to differences between Stream API map() and filter() methods of Java 8. Stream map() vs filter(). Example programs on map() and stream() methods in Java 8.


Java 8 Stream - map() VS filter() 

1. Overview


In this tutorial, We'll be learning what are the differences between map() and filter methods in java 8 Stream API. Many developers have started using these methods in real-time applications but many of them not suer about these methods when and how to use. Let us start writing a simple program to understand the differences.

Both of these methods are present in Stream API and which is used to perform sequential and parallel operations. Apart from this point, these two methods are intermediate operations and return a Stream as a result.

Note: map() and filter() methods can be invoked on a single stream. There is no restriction to use the only operation at a time.

We will see first syntax for both methods and examples. At the last will talk about similarities and differences between them.


Java 8 - Difference between Stream API map() and filter() methods



[post_ads]

2. Stream API map() method


This method just transforms the object from one form to another form. We need to pass a Function functional interface implementation using a lambda expression.

Read in-depth article on the Stream map() method.

2.1 Syntax:


<R> Stream<R> map(Function<? super T,? extends R> mapper)

Returns a stream consisting of the results of applying the given function to the elements of this stream.

2.2 Function Example


This function logic is executed for each object and returns a different type or same type as input.

Function<String, Integer> indexFinder = (input) -> input.indexOf("com");

int index = indexFinder.apply("javaprogramto.com");
System.out.println("index: " + index);

Output:

index: 14  

2.3 map() Example



Java program to collect the student names from Student's objects.

package com.java.w3schools.blog.java.program.to.java8.map;

import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * Java program to collect student names from Student objects using stream map()
 * function.
 * 
 * @author JavaProgramTo.com
 *
 */
public class StreamMapExample7 {

 public static void main(String[] args) {

  // Creating string stream using Stream.of() method.
  Stream<Student> intValues = Stream.of(new Student(1, "Ganesh", 'B'), new Student(2, "Sachin", 'A'),
    new Student(3, "Bill", 'B'), new Student(4, "Vikram", 'C'));

  // list of Student objects
  List<String> emailList = intValues.map(user -> user.getName()).collect(Collectors.toList());

  // iterating final Student list
  emailList.forEach(output -> System.out.println(output));

 }

}

Output:



Ganesh
Sachin
Bill
Vikram

3. Stream filter() method


filter() method checks a condition and passes the object or value to the next step if the condition is true.

Read an in-depth article on the Stream API filter() method.


3.1 Syntax:


Stream<T> filter(Predicate<? super T> predicate)

This method takes Predicate functional interface and returns a new Stream with the valid objects. Valid objects if and only if predicate condition is true.


3.2 Predicate Example


filter() method takes this predicate-argument and this logic will be executed for each value in the stream. Predicate returns always a boolean type.

Predicate<Integer> ageValidation = a -> a > 18;

boolean output = ageValidation.test(10);
System.out.println(output);

Output:

false

3.3 filter() example


package com.java.w3schools.blog.java.program.to.java8;

import java.util.List;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * 
 * Java program to find the valid ages.
 * 
 * @author JavaProgramTo.com
 *
 */

public class StreamFilterExample {

 public static void main(String[] args) {

  // creating a stream with different ages.
  Stream<Integer> ageStream = Stream.of(10, 20, 3, 40, 50, 6, 70, 80, 9, 0);

  // Custom predicate to check the age is above 18.
  Predicate<Integer> agePredicate = new Predicate<Integer>() {

   @Override
   public boolean test(Integer t) {

    if (t > 18) {
     return true;
    }

    return false;
   }
  };

  // filtering only valid ages using custom predicate and adding them into a list.
  List<Integer> validAgeList = ageStream.filter(agePredicate).collect(Collectors.toList());

  // printing
  validAgeList.forEach(value -> System.out.println(value));

 }

}

Output:

20
40
50
70
80

4. Stream map() VS filter()


The following are the differences and similarities of map() and filter() methods.

4.1 Stream map()


A) map() operation is part of Stream API.
B) map() is an Intermediate Operation.
C) map() method takes as an argument Function functional interface and Function implementation will return the same as input or different type.
D) map() returns a Stream&lt;T&gt;.
E) map() method returned Stream preserves the order of how they appear in the original list or Stream.
F) All values in the stream must be traversed through the logic of the Function function interface. (map() logic)
G) This will be returning a value which is mandatory. If not returning will result in a compile-time error.
H) map() method will always transform the current value or object into another type or same type. If we do not want to pass the value to the next step then we need to return a null value from the map() method.

4.2 Stream filter()


A) filter() operation is part of Stream API.
B) filter() is an Intermediate Operation.
C) filter() method takes as an argument Predicate functional interface and Predicate tells true or false about the predicate condition.
D) filter() returns a Stream&lt;T&gt;.
E) filter() method returned Stream preserves the order how they appear in the original list or Stream.
F) All values in the stream must be traversed through the logic of Predicate function interface. (filter() logic)
G) This will also be returning a value that is mandatory. If not returning will result in a compile-time error.
H) filter() method passes the values to the next step if the filter condition is true. Otherwise, the current object will be skipped from processing in the next step.



5. Conclusion


In this article, we have seen what are similarities and differences between map() and filter() methods of Stream API in Java 8. Example programs are shown on both methods.



COMMENTS

BLOGGER

About Us

Author: Venkatesh - I love to learn and share the technical stuff.
Name

accumulo,1,ActiveMQ,2,Adsense,1,API,37,ArrayList,16,Arrays,7,Bean Creation,3,Bean Scopes,1,BiConsumer,1,Blogger Tips,1,Books,1,C Programming,1,Collection,5,Collections,22,Collector,1,Command Line,1,Compile Errors,1,Configurations,7,Constants,1,Control Statements,8,Conversions,6,Core Java,81,Corona India,1,Create,2,CSS,1,Date,3,Date Time API,4,Dictionary,1,Difference,1,Download,1,Eclipse,2,Efficiently,1,Error,1,Errors,1,Exception,1,Exceptions,3,Fast,1,Files,9,Float,1,Font,1,Form,1,Freshers,1,Function,3,Functional Interface,2,Garbage Collector,1,Generics,4,Git,4,Grant,1,Grep,1,HashMap,1,HomeBrew,2,HTML,2,HttpClient,2,Immutable,1,Installation,1,Interview Questions,5,Iterate,2,Jackson API,3,Java,29,Java 10,1,Java 11,5,Java 12,5,Java 13,2,Java 14,2,Java 8,66,Java 8 Difference,2,Java 8 Stream Conversions,2,java 8 Stream Examples,3,Java 9,1,Java Conversions,11,Java Design Patterns,1,Java Files,1,Java Program,2,Java Programs,65,java.lang,5,java.util. function,1,jQuery,1,Kotlin,10,Kotlin Conversions,3,Kotlin Programs,6,Lambda,1,lang,29,Leap Year,1,live updates,1,Logging,1,Mac OS,2,Math,1,Maven,1,Method References,1,Mockito,1,MongoDB,3,New Features,1,Operations,1,Optional,6,Oracle,5,Oracle 18C,1,Partition,1,Patterns,1,Programs,1,Property,1,Python,2,Quarkus,1,Read,1,Real Time,1,Recursion,2,Remove,2,Rest API,1,Schedules,1,Serialization,1,Servlet,1,Sort,1,Sorting Techniques,8,Spring,2,Spring Boot,23,Spring Email,1,Spring MVC,1,Streams,21,String,58,String Programs,9,String Revese,1,Swing,1,System,1,Tags,1,Threads,10,Tomcat,1,Tomcat 8,1,Troubleshoot,16,Unix,2,Updates,3,util,5,While Loop,1,
ltr
item
JavaProgramTo.com: Java 8 - Difference between Stream API map() and filter() methods
Java 8 - Difference between Stream API map() and filter() methods
A quick and practical guide to differences between Stream API map() and filter() methods of Java 8. Stream map() vs filter(). Example programs on map() and stream() methods in Java 8.
https://1.bp.blogspot.com/-MP4W3gNGvBA/XgJQ3sceAfI/AAAAAAAACGA/TJR9ts3OT0wyOzZhkW4_43S6WDmp95MlQCLcBGAsYHQ/s640/Java%2B8%2B-%2BDifference%2Bbetween%2BStream%2BAPI%2Bmap%2528%2529%2Band%2Bfilter%2528%2529%2Bmethods.png
https://1.bp.blogspot.com/-MP4W3gNGvBA/XgJQ3sceAfI/AAAAAAAACGA/TJR9ts3OT0wyOzZhkW4_43S6WDmp95MlQCLcBGAsYHQ/s72-c/Java%2B8%2B-%2BDifference%2Bbetween%2BStream%2BAPI%2Bmap%2528%2529%2Band%2Bfilter%2528%2529%2Bmethods.png
JavaProgramTo.com
https://www.javaprogramto.com/2019/12/java-8-difference-stream-map-filter.html
https://www.javaprogramto.com/
https://www.javaprogramto.com/
https://www.javaprogramto.com/2019/12/java-8-difference-stream-map-filter.html
true
3124782013468838591
UTF-8
Loaded All Posts Not found any posts VIEW ALL Readmore Reply Cancel reply Delete By Home PAGES POSTS View All RECOMMENDED FOR YOU LABEL ARCHIVE SEARCH ALL POSTS Not found any post match with your request Back Home Sunday Monday Tuesday Wednesday Thursday Friday Saturday Sun Mon Tue Wed Thu Fri Sat January February March April May June July August September October November December Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec just now 1 minute ago $$1$$ minutes ago 1 hour ago $$1$$ hours ago Yesterday $$1$$ days ago $$1$$ weeks ago more than 5 weeks ago Followers Follow THIS PREMIUM CONTENT IS LOCKED STEP 1: Share to a social network STEP 2: Click the link on your social network Copy All Code Select All Code All codes were copied to your clipboard Can not copy the codes / texts, please press [CTRL]+[C] (or CMD+C with Mac) to copy Table of Content