[英]Guava: merge two multimaps
I have tree classes eg ClassA
, ClassB
, ClassC
. 我有树类,例如
ClassA
, ClassB
, ClassC
。 ClassA
and ClassB
extends ClassC
. ClassA
和ClassB
扩展了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
. 它将接受
ClassA
和ClassB
类型。
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.