本文介绍了倒车从地图℃的HashMap中,字符串,布尔值>以地图<布尔,列表与LT;弦乐>>的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有扭转HashMap的键和值更优雅/内置的方式?
目前,我有以下几点。
私人地图<布尔,列表与LT;弦乐>> reverseMap(地图<字符串,布尔值>权限){
清单<串GT;允许=新的ArrayList<串GT;();
清单<串GT;否认=新的ArrayList<串GT;();
地图<布尔,列表与LT;弦乐>>返回值=新的HashMap<布尔,列表与LT;弦乐>>(); 对于(进入<字符串,布尔值>项:permissions.entrySet()){
如果(entry.getValue()){
allow.add(entry.getKey());
}其他{
deny.add(entry.getKey());
}
} returnvalue.put(真,允许);
returnvalue.put(假的,拒绝);
返回返回值;
}
解决方案
您可能会考虑使用的<一个href=\"http://docs.guava-libraries.google$c$c.com/git/javadoc/com/google/common/collect/Multimap.html\"相对=nofollow> Multimap之
实现。例如:
私人Multimap之&LT;布尔,字符串&GT; reverseMap(地图&LT;字符串,布尔值&gt;权限){
Multimap之&LT;布尔,字符串&GT;多重映射= ArrayListMultimap.create();
对于(Map.Entry的&LT;字符串,布尔值&GT;项:permissions.entrySet()){
multimap.put(entry.getValue(),entry.getKey());
}
返回多重映射;
}
或更普遍的:
私有静态&LT; K,V&GT; Multimap之&LT; V,K&GT; reverseMap(地图&LT; K,V&GT;源){
Multimap之&LT; V,K&GT;多重映射= ArrayListMultimap.create();
对于(Map.Entry的&LT; K,V&GT;项:source.entrySet()){
multimap.put(entry.getValue(),entry.getKey());
}
返回多重映射;
}
Is there a more elegant/built-in way to reverse the keys and values of a Hashmap?
I currently have the following.
private Map<Boolean, List<String>> reverseMap(Map<String, Boolean> permissions) {
List<String> allow = new ArrayList<String>();
List<String> deny = new ArrayList<String>();
Map<Boolean, List<String>> returnvalue = new HashMap<Boolean, List<String>>();
for (Entry<String, Boolean> entry : permissions.entrySet()) {
if(entry.getValue()) {
allow.add(entry.getKey());
} else {
deny.add(entry.getKey());
}
}
returnvalue.put(true, allow);
returnvalue.put(false, deny);
return returnvalue;
}
解决方案
You might consider using one of Guava's Multimap
implementations. For example:
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;
}
Or more generally:
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;
}
这篇关于倒车从地图℃的HashMap中,字符串,布尔值&GT;以地图&LT;布尔,列表与LT;弦乐&GT;&GT;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!