Преобразование потребителей в функции

Много лямбд дляFunction интерфейс принимает форму

t -> {
    // do something to t
    return t;
}

Я делаю это так часто, что я написал метод для этого, как это.

static <T> Function<T, T> consumeThenReturn(Consumer<T> consumer) {
    return t -> {
        consumer.accept(t);
        return t;
    };
}

Это позволяет мне делать действительно хорошие вещи, как это:

IntStream.rangeClosed('A', 'Z')
         .mapToObj(a -> (char) a)
         .collect(Collectors.collectingAndThen(Collectors.toList(), consumeThenReturn(Collections::shuffle)))
         .forEach(System.out::print); 

Есть ли другой способ сделать подобные преобразования, не полагаясь на мой собственный метод? Есть ли что-то в новых API, которые я пропустил, что делает мой метод избыточным?

Ответы на вопрос(2)

Ваш ответ на вопрос