As we already saw in a previous article, the java.util.Function interface represents a function that accepts one argument and produces a result. In this article, let us see how we can compose a function from two others.

### Using compose()

The compose() method is a default method in the Function interface that returns a composed function that first applies the before function to its input, and then applies this function to the result.

Here is an example.

```
Function<Integer, Integer> before = x -> x + 10;
Function<Integer, Integer> after = x -> x * 2;
Function<Integer, Integer> combined = after.compose(before);
System.out.println(combined.apply(5)); // Prints 30
```

In the above example, the before function runs first, adding 10 to 5 and the resulting 15 is multiplied by 2 when the after function runs. Thus the output is 30.

### Using andThen()

The andThen() method is also a default method in the Function Interface, which works in the opposite manner to compose(). This means that calling b.compose(a) is actually the same as calling a.andThen(b).

This method returns a composed function that first applies this function to its input, and then applies the after function to the result..

Let us understand with the below example.

```
Function<Integer, Integer> before = x -> x + 10;
Function<Integer, Integer> after = x -> x * 2;
Function<Integer, Integer> combined = before.andThen(after);
System.out.println(combined.apply(5));
```

### Quiz

Click here to attempt quiz questions on this topic.