Reverse HashMap keys and values in Java
hashmap, java
Solution
They all are unique, yes
If you're sure that your values are unique you can iterate over the entries of your old map .
Map<String, Character> myNewHashMap = new HashMap<>();
for(Map.Entry<Character, String> entry : myHashMap.entrySet()){
myNewHashMap.put(entry.getValue(), entry.getKey());
}
Alternatively, you can use a Bi-Directional map like Guava provides and use the `inverse()` method :
BiMap<Character, String> myBiMap = HashBiMap.create();
myBiMap.put('a', "test one");
myBiMap.put('b', "test two");
BiMap<String, Character> myBiMapInversed = myBiMap.inverse();
As java-8 is out, you can also do it this way :
Map<String, Integer> map = new HashMap<>();
map.put("a",1);
map.put("b",2);
Map<Integer, String> mapInversed =
map.entrySet()
.stream()
.collect(Collectors.toMap(Map.Entry::getValue, Map.Entry::getKey))
Finally, I added my contribution to the proton pack library, which contains utility methods for the Stream API. With that you could do it like this:
Map<Character, String> mapInversed = MapStream.of(map).inverseMapping().collect();
Problem
It's a simple question, I have a simple HashMap of which i want to reverse the keys and values. ``` HashMap<Character, String> myHashMap = new HashMap<Character, String>(); myHashMap.put('a', "test one"); myHashMap.put('b', "test two"); ``` and I want to create a new HashMap in which i put the opposites. ``` HashMap<String, Character> reversedHashMap = new HashMap<String, Character>(); e.g. Keys "test one" & "test two" and values 'a' & 'b'. ```