使用 HashMultiset 获取值的 Multimap
我试图拥有一个(基于哈希的)多重映射,其中每个键都有一个(基于哈希的)值的多重集。请参阅示例:
Multimap<Object, Object> mmap = Multimaps.newMultimap(
Maps.<Object, Collection<Object>>newHashMap(),
new Supplier<Collection<Object>>() {
public Collection<Object> get() {
return HashMultiset.create();
}
});
mmap.put("1", "2");
但是,
System.out.println(mmap.get("1") instanceof Multiset<?>);
//false, the returned collection is not a HashMultiset,
//but a (private) WrappedCollection
看来我无法访问我创建的多重集?我希望能够将其作为 Multiset(包装在 Multisets.unmodifyingMultiset() 中)返回。我也不想每次都将其复制到新的 Multiset 中。除了切换回 Map
并在代码中添加 Multimap
想要消除的复杂性之外,我还有其他选择吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
恐怕这似乎不可能。您应该提交功能请求。我偷偷怀疑那些狡猾的 Google 人员有一种漂亮的 Multimap,他们可能会发布它,这可能会对您有所帮助。
I'm afraid this doesn't seem to be possible. You should file a feature request. I have a sneaking suspicion those crafty Google folks have a nifty kind of a Multimap that they could potentially release that might potentially help you.
仅限 Multimap 界面指定
get(K)
返回一个Collection
。我认为您的代码依赖或假设其他任何东西都是糟糕的设计。您能否进一步扩展一下您在这里尝试做的事情?似乎应该有一种更简单的方法来完成它。
The Multimap interface only specifies that
get(K)
return aCollection<V>
. I think it would be poor design for your code to depend or assume anything else.Can you expand a little bit more on what you are trying to do here? Seems like there should be an easier way to accomplish it.