import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;

public final class Main {
 
	private static <T, U> List<U> compactMap(
			List<T> list,
			Function<T, Optional<U>> transform) {
	    return list.stream()
	        .map(e -> transform.apply(e))
	        .flatMap(o -> o.stream())
	        .collect(Collectors.toList());
	}

    public static void main(String[] args) {
    	var list = Arrays.asList(
    		"The", "quick", "brown", null, "jumps",
    		"over", "the", "lazy", null);
    	var all = compactMap(
    		list,
    		e -> Optional.ofNullable(e)
    			.map(s -> Integer.valueOf(s.length())));
    	for (var e : all) {
    		System.out.println(e);
    	}
    }
}
