import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; import static java.util.stream.Collectors.toMap; class Test { public CompletableFuture> getPercentile(List symbols) { List params = new ArrayList<>(5); return getPercentile(params, symbols) .thenApplyAsync((map) -> map.entrySet().stream() .collect(toMap(Map.Entry::getKey, e -> new VolPercentile(e.getValue())))); } public CompletableFuture> getPercentile(List params, List symbols) { return null; } } class NameValuePair {} class VolPercentile implements Serializable { public VolPercentile(Double amount) {} }