lots of exercises in java... from https://github.com/exercism/java

Hints

The foldLeft and foldRight methods are "fold" functions, which is a concept well-known in the functional programming world, but less so in the object-oriented one. See the Wikipedia page on folding for general background and signature/implementation hints.