Как сделать картуиз потока> в API потока Java? - PullRequest
0 голосов
/ 09 ноября 2018

О. Я имею Java 8 и хочу собрать

Map<K, V> 

от

Stream<Tuple2<K, V>>

Я не хочу использовать Pair из-за подробного синтаксиса. Есть ли способ сделать

.collect(toMap(Tuple2::_1, Tuple2::_2))

Thanx

1 Ответ

0 голосов
/ 09 ноября 2018

AFAIK , Этого нельзя избежать в Java ( по сравнению с тем, как это делается в Scala. )

Однако, если вы собираетесь использовать в коде большое количество преобразований кортежей в карту и хотите избежать подробного синтаксиса, вы можете создать пользовательский TupleCollector и добавить метод toMap.

Это может быть шкаф, в который вы попадете в скалу.

static class TupleCollector {
        public static <K, V, T extends Tuple2<K, V>> Collector<T, ?, Map<K, V>> toMap() {
            return Collectors.toMap(T::_1, T::_2);
        }
    }

Код для вызова

import static TupleCollector.toMap
...
myStream.collect(toMap());

PS: Опять же, я не удивлюсь, если это не пройдет этап проверки кода .

...