Processing collections in a functional style

  1. Start from a collection (List, Set, Map keys/values, array, etc.)
  2. Apply intermediate operations (filter, map, sorted, distinct, etc.)
  3. Finish with a terminal operation (collect, forEach, count, reduce, etc.)

Convert from list to stream:

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

// Convert to stream
Stream<Integer> stream = list.stream();

Filtering / selecting data

Transforming data

Sorting / slicing