import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

class Ideone {
  public static void main(String[] args) {
    final Map<Object, Integer> map = new HashMap<>();
    map.put("foo", 3);
    map.put("bar", 2);
    map.put(42, 5);
    System.out.println(transform(map));
  }

  private static <T> List<T> transform(Map<? extends T, Integer> map) {
    return map.entrySet().stream()
        .map(entry -> Collections.nCopies(entry.getValue(), entry.getKey()))
        .flatMap(Collection::stream)
        .collect(Collectors.toList());
  }
}