A Consumer is a functional interface that accepts a single input and returns no output.
```
import java.util.function.Consumer;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) {
Consumer<String> printer = t -> System.out.println(t);
Stream<String> names = Stream.of("a", "b", "c");
names.forEach(printer);
}
}
```
Consumer interface has two methods:
Method | Meaning
----- | -----
void accept(T t); | is the Single Abstract Method (SAM) which accepts a single argument of type T.
default Consumer<T> andThen(Consumer<? super T> after); | is a default method used for composition.
```
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
public class Main {
public static void main(String[] args) {
List<String> names = Arrays.asList("a", "b", "c", "d");
Consumer<List<String>> upperCaseConsumer = list -> {
for (int i = 0; i < list.size(); i++) {
list.set(i, list.get(i).toUpperCase());
}
};
Consumer<List<String>> printConsumer =
list -> list.stream().forEach(System.out::println);
upperCaseConsumer.andThen(printConsumer).accept(names);
}
}
```