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.