Метод andThen класса Function
Метод andThen класса Function
позволяет объединить две функции в одну цепочку. Сначала выполняется
исходная функция, а затем результат её применения передаётся в качестве
аргумента второй функции. В параметр метода мы передаём вторую функцию,
которая будет выполнена после первой.
Синтаксис
Function<T, R> andThen(Function<? super R, ? extends V> after)
Пример
Давайте создадим две функции: первая удваивает число, вторая
преобразует число в строку с пояснением. Объединим их с помощью
andThen:
import java.util.function.Function;
public class Main
{
public static void main(String[] args)
{
Function<Integer, Integer> doubleIt = x -> x * 2;
Function<Integer, String> describe = x -> "Result: " + x;
Function<Integer, String> combined = doubleIt.andThen(describe);
System.out.println(combined.apply(5));
}
}
Результат выполнения кода:
"Result: 10"
Пример
Давайте применим цепочку функций к потоку строк. Первая функция приводит строку к верхнему регистру, вторая добавляет восклицательный знак:
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
public class Main
{
public static void main(String[] args)
{
Function<String, String> upper = s -> s.toUpperCase();
Function<String, String> exclaim = s -> s + "!";
Function<String, String> combined = upper.andThen(exclaim);
List<String> res = List.of("a", "b", "c")
.stream()
.map(combined)
.collect(Collectors.toList());
System.out.println(res);
}
}
Результат выполнения кода:
[A!, B!, C!]