Java8 - Stream map methods with examples
In this blog post, we’ll delve into the intricacies of the map() method in Java 8 Streams.
Introduction to map() in java 8
The map() method is employed to transform objects into other objects of the same or different types within a Stream. It serves as an intermediate operation in stream processing, allowing for the application of a function to each element of the stream.
This operation is executed lazily, meaning it is invoked only when needed, and it produces a stream of objects containing the results of applying the function to each element.
Following is a Syntax
 <R> Stream<R> map(Function<? super T, ? extends R> mapper)
Here, the map method takes a Function as input. The Function interface is a functional interface with one abstract method, accepting input of type T and returning output of type R.
Let’s explore some examples of using the map() method in Java 8 Streams.
java Map Filter Examples
It is an example for List of String which contains numbers as input and output returns even numbers.
- Created a List of strings
 - Created Stream from List
 - Call map() method with a lambda expression to iterate stream of elements
 - Apply filter to each element to check event number
 - Finally, terminal operation collect to convert the stream to List
 
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class Test {
    public static void main(String[] args) {
        List<String> listStringNumbers = Arrays.asList("11", "12", "31", "41", "15", "16");
        System.out.println(listStringNumbers);
        List<Integer> eventNumbers = listStringNumbers.stream()
                .map(s -> Integer.valueOf(s))
                .filter(number -> number % 2 == 0)
                .collect(Collectors.toList());
        System.out.println(eventNumbers);
    }
}
Output:
[11, 12, 31, 41, 15, 16]
[12, 16]
How to convert Map to List using streams?
It is an example of Converting hashmap to a custom java object. Using lambda expressions with the stream, iterate hash map elements and construct objects.
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class MapExample {
    public static void main(String[] args) {
        Map<String, String> map = new HashMap<>();
        map.put("1", "Kiran");
        map.put("12", "Ram");
        map.put("13", "John");
        map.put("5", "Frank");
        List<MyObject> listOfObjects = map.entrySet().stream().sorted(Comparator.comparing(e -> e.getKey()))
                .map(e -> new MyObject(e.getKey(), e.getValue())).collect(Collectors.toList());
        listOfObjects.forEach(l -> System.out.println("Id: " + l.getId() + ", Name: " + l.getName()));
    }
}
class MyObject {
    private String id;
    private String name;
    public MyObject(String id, String name) {
        this.id = id;
        this.name = name;
    }
    public String getId() {
        return id;
    }
    public String getName() {
        return name;
    }
}
Output:
Id: 1, Name: Kiran
Id: 12, Name: Ram
Id: 13, Name: John
Id: 5, Name: Frank
How to convert List of String to uppercase or lowercase?
Created a Stream from List and calling map on each string, convert and output to console.
import java.util.Arrays;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        List<String> listString= Arrays.asList("one", "two", "three", "four", "five");
        listString.stream().map(String::toUpperCase).forEach(System.out::println);
    }
}
Output:
ONE
TWO
THREE
FOUR
FIVE
Java 8 provides three types of map methods tailored for handling int, long, and Double values.
mapToInt - IntStream mapToInt ( ToIntFunction<? super T> mapper ):
- Accepts a 
ToIntFunctionas a parameter and returns an IntStream. ToIntFunctionis a functional interface with a single abstract method that accepts integer values and generates a result.IntStreamis the integer version of the Stream class.- Each element of the stream is applied to the function.
 
mapToLong - LongStream mapToLong ( ToLongFunction<? super T> mapper ):
- Accepts a 
ToLongFunctionas an argument and returns a LongStream. - ToLongFunction is a functional interface with a single abstract method that takes long values as input and outputs a result.
 - LongStream is the long version of the Stream class.
 - Each element of the stream is applied to the function.
 
mapToDouble - DoubleStream mapToDouble ( ToDoubleFunction<? super T> mapper ):
- It accepts ToDoubleFunction as an argument and returns DoubleStream.
 - ToDoubleFunction is a functional interface with a single abstract method that takes input double values and outputs results.
 - DoubleStream is a double version of the Stream class.
 - Each element of a stream is applied to the function.
 
Conclusion
In conclusion, this tutorial has provided insights into the map() method in Java 8 Streams, along with practical examples and explanations. With the map() method, developers can easily transform objects within a stream, enhancing the flexibility and functionality of stream operations.
