Потоковая обработка обрабатывает только одно значение, поэтому вы не можете получить keyValueStream((k,v)-> ...)
, но вы можете получить keyValueStream(x -> ...)
, где x
- это кортеж / пара.
Поскольку вы начинаете с Map
, который может передавать Entry
объекты (пары ключ / значение), и вам нужна пара ключ / значение в вашей лямбде, поток Entry
объектов кажется подходящим.
Это означает, что вы просто хотите сгладить вложенную коллекцию, например, как это:
import java.util.AbstractMap.SimpleEntry;
data.entrySet()
.stream()
.flatMap(e -> e.getValue().stream().map(v -> new SimpleEntry<>(e.getKey(), v)))
// At this point you have a Stream<Entry<String, Integer>> so you can e.g. do this:
.forEach(e -> System.out.println(e.getKey() + "=" + e.getValue()))
;