import java.util.Collections; import java.util.List; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; class Main { public static T2 safeGet(T1 value, Function extractor) { return value == null ? null : extractor.apply(value); } public static class Data { public java.util.Date date() { return new java.util.Date(); } } public static void main(String[] args) { List list = Collections.emptyList(); Map map1 = list.stream().collect(Collectors.toMap(data -> data.date().getTime(), Function.identity())); Map map2 = safeGet(list, li -> li.stream().collect(Collectors.toMap(data -> data.date().getTime(), Function.identity()))); } }