Let's look at the below code.
List<String> names = Arrays.asList("Adam", "Brian", "Supun");
List<Integer> lengths = names.stream()
.map(name -> name.length())
.collect(Collectors.toList());
And simply then will look at the javadoc for streams.map. There the signature for map method appears like this.
<R> Stream<R> map(Function<? super T,? extends R> mapper)
Can somebody please explain how JVM maps the lambda expression we gave (name -> name.length()) in terms of Function<? super T,? extends R> mapper?
names.stream().map(...).collect(Collectors.toList())? Also, don't use the raw List type.