@Override public List<T> apply(final Void ignored) { final Map<R, Iterator<T>> map = Maps.newIdentityHashMap(); for (final Map.Entry<R, CompletionStage<List<T>>> entry : futures.entrySet()) { final R client = entry.getKey(); map.put(client, CompletableFutures.getCompleted(entry.getValue()).iterator()); } final List<T> result = Lists.newArrayList(); for (final R memcacheClient : routing2) { final Iterator<T> iterator = map.get(memcacheClient); result.add(iterator.next()); } return result; } }