Looking for java Keywords? Try Ask4Keywords

Java Language Использование потоков Map.Entry для сохранения начальных значений после сопоставления


пример

Когда у вас есть Stream вам нужно сопоставить, но вы хотите сохранить начальные значения, вы можете сопоставить Stream с Map.Entry<K,V> с помощью утилиты, например:

public static <K, V> Function<K, Map.Entry<K, V>> entryMapper(Function<K, V> mapper){
    return (k)->new AbstractMap.SimpleEntry<>(k, mapper.apply(k));
}

Затем вы можете использовать свой конвертер для обработки Stream имеющего доступ к исходным и отображаемым значениям:

Set<K> mySet;
Function<K, V> transformer = SomeClass::transformerMethod;
Stream<Map.Entry<K, V>> entryStream = mySet.stream()
    .map(entryMapper(transformer));

Затем вы можете продолжить обработку этого Stream как обычно. Это позволяет избежать накладных расходов на создание промежуточной коллекции.