Fab*_*ndl 2 java collections map multimap guava
为什么Guava没有以下工厂调用来从普通Map创建MultiMap?
public static <K,V> MultiMap<K,V> invertMap(Map<V,K> map);
Run Code Online (Sandbox Code Playgroud)
我有程序名映射到它们被调用的频率的整数.我想反转这个,这样我最终可以构造一个TreeMap,按调用计数排序,然后是导致一个或多个程序名的键.
Mar*_*ers 10
怎么样:
public static <K,V> Multimap<K,V> invertMap(Map<V,K> map) {
return Multimaps.invertFrom(Multimaps.forMap(map), ArrayListMultimap.create());
}
Run Code Online (Sandbox Code Playgroud)
似乎这不需要专用功能.你甚至可以TreeMap
很容易地回到原点:
Map<String, Integer> programCounts;
TreeMap<Integer, Collection<String>> map =
new TreeMap<>(
Multimaps.invertFrom(
Multimaps.forMap(programCounts),
ArrayListMultimap.create()
).asMap()
);
Run Code Online (Sandbox Code Playgroud)