具有非唯一值的反向/反向映射到多图

时间:2017-06-22 17:21:26

标签: java

鉴于Map<Key, Value> values可能会重复如何反映地图以使结果属于Map<Value, List<Key>>类型?

1 个答案:

答案 0 :(得分:0)

使用没有通配符的流,不保留null值:

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())));
}