它们都是独一无二的,是的
如果您确定您的值是唯一的,您可以遍历旧映射的条目。
Map<String, Character> myNewHashMap = new HashMap<>();
for(Map.Entry<Character, String> entry : myHashMap.entrySet()){
myNewHashMap.put(entry.getValue(), entry.getKey());
}
或者,您可以使用像 Guava 提供的双向映射,并使用 inverse()
方法:
BiMap<Character, String> myBiMap = HashBiMap.create();
myBiMap.put('a', "test one");
myBiMap.put('b', "test two");
BiMap<String, Character> myBiMapInversed = myBiMap.inverse();
随着Java 8的推出,你也可以这样做:
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))
最后,我向
质子背包库添加了我的贡献,其中包含用于Stream API的实用方法。有了这个,你可以像这样做:
Map<Character, String> mapInversed = MapStream.of(map).inverseMapping().collect()
Map<String,List<Character>>
。 - Alexis C.