Это потому, что Stream#map
является промежуточной операцией , и вы в настоящее время игнорируете все это вместе.
Желательно использовать терминальную операцию для выполнения блока кода, который вы включили в операцию карты. Простой способ сделать это может быть
l1.stream().map(c -> {
System.out.println("inside map" + c);
l.stream().filter(s ->
map1.containsKey(c + "-" + s)).forEach(f -> {
System.out.println("f value is" + f);
finalList.add(f);
});
return null;
}).forEach(a -> { }); // notice forEach doing nothing for now
В сторону : то, что вы пытаетесь достичь без операторов записи (печати), можно записать как
l1.forEach(a -> IntStream.range(0, l.size())
.filter(b -> map1.containsKey(a + "-" + l.get(b)))
.mapToObj(l::get)
.forEach(finalList::add));
// Output: Final List is:[c]
Примечание : Это также поможет вам избежать операций с состоянием, выполняемых в map
.