为什么Google Collections不像Apache Collections那样支持MultiKeyMap?

时间:2010-03-03 15:58:44

标签: java collections guava apache-commons

Google的决定是否类似于SortedMultiSet (stackoverflow question)的决定 还是因为没有使用MultiKeyMap

我知道MultiKeyMap的替代方法可以使用自定义类作为包含多个键作为其类成员的键。相反,我喜欢在调用MultiKeyMap的获取时指定多个键的概念。

Apache的MultiKeyMap版本非常棒,但我严重缺少泛型,因此我们会考虑使用Google Collections来实现它的现代化。如果有人知道Google为什么还没有支持它,或者有更好的选择,请回复。

3 个答案:

答案 0 :(得分:11)

仅供参考,已接受的答案已于2010年3月得到解答,但截至2010年9月,番石榴已包括Table

答案 1 :(得分:7)

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

答案 2 :(得分:3)

我认为泛型可能是这里实施的最佳选择。如果仅查看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>

底层实现基本上是按照你的建议(使用自定义类)。但是,它并没有正式为它创建一个类,所有内容都是内联的。这真的是一个实现细节。但是要使用Google集合,执行相同操作的自定义类的操作方式与我确定实现hashCode()和equals()的方式大致相同。