Google的决定是否类似于SortedMultiSet
(stackoverflow question)的决定
还是因为没有使用MultiKeyMap
?
我知道MultiKeyMap
的替代方法可以使用自定义类作为包含多个键作为其类成员的键。相反,我喜欢在调用MultiKeyMap
的获取时指定多个键的概念。
Apache的MultiKeyMap
版本非常棒,但我严重缺少泛型,因此我们会考虑使用Google Collections来实现它的现代化。如果有人知道Google为什么还没有支持它,或者有更好的选择,请回复。
答案 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()的方式大致相同。