I need create inverse map - select unique values and for them find keys. Seems that only way is to iterate all key/value pairs, because entrySet returns set of so value not
To get an inverted form of a given map in java 8:
public static Map inverseMap(Map sourceMap) {
return sourceMap.entrySet().stream().collect(
Collectors.toMap(Entry::getValue, Entry::getKey,
(a, b) -> a) //if sourceMap has duplicate values, keep only first
);
}
Example usage
Map map = new HashMap();
map.put(1, "one");
map.put(2, "two");
Map inverted = inverseMap(map);