package tools; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Optional; import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; public class Map { public static <E1,E2, T extends List<E2>> List<E1> of(Function<E2,E1>f,T seq){ return seq.stream().map(f).collect(Collectors.toList()); } public static <E1,E2, T extends Set<E2>> Set<E1> of(Function<E2,E1>f,T seq){ return seq.stream().map(f).collect(Collectors.toSet()); } public static <E1,E2> Optional<E1> of(Function<E2,E1>f,Optional<E2> el){ if(!el.isPresent()){return Optional.empty();} return Optional.of(f.apply(el.get())); } }