我们来看一张地图:
我需要反转这张地图并获得:
我用这段代码完成了它:
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>>a 替换HashMultimap<U, V>它们(它们是等价的,并且Multimap更容易使用),你现在可以使用Multimaps.invertFrom()哪个将填充a Multimap<V, U>.
请注意,正如Javadoc所提到的,如果您使用了ImmutableMultimap,则可以直接调用ImmutableMultimap.inverse().
| 归档时间: | 
 | 
| 查看次数: | 214 次 | 
| 最近记录: |