2012-11-05 43 views
15

我是新来的番石榴图书馆,但发现BiMap很适合我的需求。我的一个问题是,我需要对我的BiMap中的值进行排序。通常情况下,我会使用TreeMap,因为它的继承排序,但能够反转地图以查看键值,就好像它们是值是必须的。排序番石榴BiMap

所以我一直在寻找专家的建议来讨论这个问题。我看到的解决方案是: 1.创建BiMap比较器并使用我自己的地图分类实用程序。 2.构建我自己的'BiTreeMap'数据结构。

有没有我没有考虑过的解决方案?有没有'番石榴的方式'来做到这一点,我错过了?谢谢!

回答

20

我们目前没有排序的BiMap类型,因为它有点模棱两可,它会如何工作:条目是否按键排序?由值?转发条目是否按键进行排序,反向条目是按值排序的?

目前,唯一真正可用的替代方案是ImmutableBiMap,它保留了您放置条目的顺序 - 因此ImmutableBiMap.copyOf(Maps.newTreeMap(map))会给您一个按键排序的BiMap

(我们可能会更认真地考虑提供直接排序BiMap如果你对你的使用情况提交给美国更多细节的功能要求,虽然)。

+0

感谢您的回答!我认为从TreeMap派生的ImmutableBiMap将充分覆盖基础。我很少需要这样做,地图总是很小,所以它不会是性能问题。顺便踢屁股图书馆。 – Cody