您可能会考虑使用Guava的
Multimap实现之一。例如:
private Multimap<Boolean, String> reverseMap(Map<String, Boolean> permissions) { Multimap<Boolean, String> multimap = ArrayListMultimap.create(); for (Map.Entry<String, Boolean> entry : permissions.entrySet()) { multimap.put(entry.getValue(), entry.getKey()); } return multimap;}或更笼统地说:
private static <K, V> Multimap<V, K> reverseMap(Map<K, V> source) { Multimap<V, K> multimap = ArrayListMultimap.create(); for (Map.Entry<K, V> entry : source.entrySet()) { multimap.put(entry.getValue(), entry.getKey()); } return multimap;}


