Stream map() in Java is an intermediate operation that converts/transforms one object into another. It is used to apply one given function to the elements of a Stream.
Stream map() takes a function as an argument, and it does not modify the original source of a stream. It just returns a new stream after applying the given function to all elements.
Stream map() operation – examples
Example 1:
Converting String elements from the List to the upper case.
class Test { public static void main(String[] args) { List<String> cities = new ArrayList<>(Arrays.asList("New York", "Paris", "London", "Monte Carlo", "Berlin")); cities.stream() .map(city -> city.toUpperCase()) .forEach(city -> System.out.println(city)); } }
Output: NEW YORK PARIS LONDON MONTE CARLO BERLIN
This also can be written using method references:
class Test { public static void main(String[] args) { List<String> cities = new ArrayList<>(Arrays.asList("New York", "Paris", "London", "Monte Carlo", "Berlin")); cities.stream() .map(String::toUpperCase) .forEach(System.out::println); } }
Output: NEW YORK PARIS LONDON MONTE CARLO BERLIN
You see how we converted the input Strings to the upper case with the map() method.
Example 2:
Using the map() method with custom objects. Let’s create a User class:
class User { private String name; private String username; private String membershipType; private String address; public User(String name, String username, String membershipType, String address) { this.name = name; this.username = username; this.membershipType = membershipType; this.address = address; } public String getName() { return name; } }
Now let’s write the program that will create a stream from the list of users and transform the elements:
class Test { public static void main(String[] args) { List<User> users = getAllUsers(); users.stream() .map(User::getName) .forEach(System.out::println); } }
Output: John Megan Steve Melissa
Here, the map() method accepts the user object, and as a result, it returns a stream of users names, and that stream is passed to the forEach() method. So it takes a stream of one type and returns a new stream of another type.
I hope this tutorial was helpful to you. To learn more, check out other Java Functional Programming tutorials.