简体   繁体   English

番石榴:合并两个多图

[英]Guava: merge two multimaps

I have tree classes eg ClassA , ClassB , ClassC . 我有树类,例如ClassAClassBClassC ClassA and ClassB extends ClassC . ClassAClassB扩展了ClassC I have two Multimaps - Multimap<Integer, ClassA> and Multimap<Integer, ClassB> and I would like to merge this two multimaps into one. 我有两个Multimaps - Multimap<Integer, ClassA>Multimap<Integer, ClassB> ,我想将这两个multimaps合并为一个。 I have tried find some solution but unsuccessfully. 我试过找到一些解决方案,但没有成功。 I have tried sth. 我试过了...... like Multimap<Integer, ? extends ClassC> Multimap<Integer, ? extends ClassC> Multimap<Integer, ? extends ClassC> but I don't know if I make it right and if I can merge two multimaps together. Multimap<Integer, ? extends ClassC>但我不知道我是否正确,如果我可以合并两个多图。 Can someone help me? 有人能帮我吗? Thank you for response, I appreciate every help. 感谢您的回复,感谢您的帮助。

Multimap<Integer, ? extends ClassC> Multimap<Integer, ? extends ClassC> would mean that the generic type can be any type that extends ClassC , but the type has to be fixed. Multimap<Integer, ? extends ClassC>意味着泛型类型可以是扩展ClassC任何类型,但必须修复类型。 ie, it can be either all ClassA or all ClassB . 即,它可以是所有ClassA或所有ClassB So you should use Multimap<Integer, ClassC> instead. 所以你应该使用Multimap<Integer, ClassC> It will accept both the types ClassA and ClassB . 它将接受ClassAClassB类型。

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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM