I'm reading a Java 8 book by Ricahrd Warburton and he provided the following excercise:
try rewriting the following using method references:
[...]
The flatMap approach to concatenate lists
I really don't understand how to apply flatMap here. The thing that confused me was that flat map is used to map each element of a Stream to another Stream and then concatenate them together to produce a larger Stream but here we have to separate List<T>. 
public static <T> List<T> concat(List<T> lst1, List<T> lst2){
    //lst1.stream().flatMap() - it maps each elements 
                                //of lst1 to stream and concatenates it for each                                          
                                //element    
}
Any ideas?
For the purpose of the exercise, the idea is to use Stream.of(...) to create a Stream<List<T>> containing the two given lists, and flat map each list with the method reference List::stream. This will flatten the Stream<List<T>> into a Stream<T>. Then, you can collect all the elements into a list with Collectors.toList():
public static <T> List<T> concat(List<T> lst1, List<T> lst2){
    return Stream.of(lst1, lst2).flatMap(List::stream).collect(Collectors.toList());
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With