2010-03-03 53 views
5

Google的决定是否类似于SortedMultiSet(stackoverflow question) 的决定还是因为没有使用MultiKeyMap为什么Google集合不像Apache集合那样支持MultiKeyMap?

我知道用于MultiKeyMap替代可以使用自定义类作为其含有多个键作为其类成员的密钥。相反,我喜欢在调用MultiKeyMap的get时指定多个键的概念。

Apache的版本MultiKeyMap是伟大的,但我严重缺失的仿制药,因此看着谷歌集合为一体的现代化实现它。如果有人知道Google为什么还没有支持它,或者有更好的选择,请回复。

回答

6

我们有一个非常好的双层地图实现,我们称之为“表”(K1是“行键”,K2是“列键”),我们只是没有得到它尚未发布。但是,过去两个关键是收益递减。

+2

伟大的,有谷歌官方收集家伙响应:) 我能有一个告密者峰顶到这个 '表' 的数据结构? 为什么不有3层和4层地图? – 2010-03-04 00:01:41

+0

@ kevin-bourrillion这张2层地图已经发布了吗? – Cat 2014-06-01 04:14:44

+0

是的,因为这里最高的答案指出。我的答案应该是不被接受的。 – 2014-11-02 16:48:24

2

我认为仿制药可能是执行搅局者在这里。如果您只查看Map接口,则有关键类型(K)和值类型(V)的通用说明符。我不认为可以很容易地使用泛型来指定它,而不必将实现分成多个类(每个关键组件一个)。

您需要为每一个类:

MultiKeyMap2<K1,K2,V> 
MultiKeyMap3<K1,K2,K3,V> 
MultiKeyMap4<K1,K2,K3,K4,V> 
MultiKeyMap5<K1,K2,K3,K4,K5,V> 

底层的实现基本上是做你的建议是什么(使用自定义类)。但是,它并没有正式为它创建一个类,所有内容都是内联的。这实际上是一个实现细节。但是,使用谷歌收集的自定义类来执行同样的事情会很多的操作方式相同,我一定要实现的hashCode()和equals()。

9

仅供参考,公认的答案在2010年3月被回答,但截至2010年9番石榴包括Table

+0

您可以使用您在此处提供的更新信息编辑接受的答案吗? – 2016-05-18 05:18:18

+0

@MonisIqbal你不应该那样做。这里是[Meta上关于这个主题的许多帖子](http://meta.stackoverflow.com/a/320293/1768232)。如果你不喜欢接受的答案,请降低它。如果你喜欢我的,赶快行动吧,这就是按钮的用途。但是,您不应该完全编辑内容 - 编辑其他人的答案,编辑功能是针对不改变内容的改进。 – durron597 2016-05-19 17:50:28