番石榴:合并两个多图

时间:2013-02-18 15:51:36

标签: java guava

我有树类,例如ClassAClassBClassCClassAClassB延伸ClassC。我有两个Multimaps - Multimap<Integer, ClassA>Multimap<Integer, ClassB>,我想将这两个多重映射合并为一个。我试过找到一些解决方案,但没有成功。我试过了......像Multimap<Integer, ? extends ClassC>但我不知道我是否正确,如果我可以合并两个多图。有人能帮我吗?感谢您的回复,感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

Multimap<Integer, ? extends ClassC>意味着泛型类型可以是扩展ClassC的任何类型,但必须修复类型。即,它可以是全部ClassA,也可以是全部ClassB。所以你应该使用Multimap<Integer, ClassC>代替。它会同时接受ClassAClassB类型。

答案 1 :(得分:6)

Multimap<Integer, ClassC> combine(Multimap<Integer, ? extends ClassC> a, Multimap<Integer, ? extends ClassC> b) {
  Multimap<Integer, ClassC> combined = new SetMultimap<Integer, ClassC>();  // or whatever kind you'd like
  combined.putAll(a);
  combined.putAll(b);
  return combined;
}