package modern.challenge; import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.stream.Stream; public class Main { public static void main(String[] args) { } @SuppressWarnings("unchecked") public static Function reduceStrings(Function... functions) { Function function = Stream.of(functions) .reduce(Function.identity(), Function::andThen); return function; } public static List replace(List list, Replacer r) { if (list == null || r == null) { throw new IllegalArgumentException("List/replacer cannot be null"); } List result = new ArrayList<>(); for (String s : list) { result.add(r.replace(s)); } return result; } }