Java 具有非唯一值的反转/反转映射到多重映射

Java 具有非唯一值的反转/反转映射到多重映射,java,Java,给定映射,其中值可能重复如何反转映射,以使结果为映射类型?使用流,不使用通配符,不保留空值: import static java.util.stream.Collectors.groupingBy; import static java.util.stream.Collectors.mapping; import static java.util.stream.Collectors.toList; public static <Key, Value> Map<Value,

给定映射,其中值可能重复如何反转映射,以使结果为映射类型?

使用流,不使用通配符,不保留空值:

import static java.util.stream.Collectors.groupingBy;
import static java.util.stream.Collectors.mapping;
import static java.util.stream.Collectors.toList;

public static <Key, Value> Map<Value, List<Key>> inverseMap(Map<Key, Value> map) {
    return map.entrySet().stream()
            .collect(groupingBy(Map.Entry::getValue, mapping(Map.Entry::getKey, toList())));
}