我想您很亲密,您需要将
flatMap这些条目添加到a
Stream并从那里收集。我使用了已经存在的
SimpleEntry,但是您也可以使用
Pair某种。
initialMap.entrySet() .stream() .flatMap(entry -> entry.getValue().stream().map(v -> new SimpleEntry<>(entry.getKey(), v))) .collect(Collectors.groupingBy( Entry::getValue, Collectors.mapping(Entry::getKey, Collectors.toList()) ));
好吧,如果您不想增加这些
SimpleEntry实例的额外开销,则可以做些不同:
Map<Integer, List<String>> result = new HashMap<>(); initialMap.forEach((key, values) -> { values.forEach(value -> result.computeIfAbsent(value, x -> new ArrayList<>()).add(key)); });


