java – 如何反转地图
发布时间:2020-12-15 04:19:00 所属栏目:Java 来源:网络整理
导读:我们来看一张地图: A – {1,2,3} B – {3,4,5} C – {2,3,5} 我需要反转这张地图并获得: 1 – {一个} 2 – {A,C} 3 – {A,B,C} 4 – {B} 5 – {B,C} 我用这段代码完成了它: public static U,V MapV,SetU reverseMap(MapU,SetV map) { MapV,SetU result =
我们来看一张地图:
> A – > {1,2,3} 我需要反转这张地图并获得: > 1 – > {一个} 我用这段代码完成了它: public static <U,V> Map<V,Set<U>> reverseMap(Map<U,Set<V>> map) { Map<V,Set<U>> result = Maps.newHashMap(); for(Map.Entry<U,Set<V>> entry : map.entrySet()) { for(V value : entry.getValue()) { Set<U> set = result.get(value); if(set == null) { set = Sets.newHashSet(); result.put(value,set); } set.add(entry.getKey()); result.put(value,set); } } return result; } 但这只是一个反向索引,所以我认为可能存在一个预定义的方法来做到这一点. 有人知道这样的图书馆吗?番石榴的方法? 解决方法
如果您替换HashMap< U,Set< V>>通过HashMultimap< U,V> (它们是等效的,Multimap更易于使用),您现在可以使用
Multimaps.invertFrom() 来填充Multimap< V,U>.
请注意,正如Javadoc所提到的,如果使用 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |