2012-11-05 1 views
15

私はGuavaライブラリを初めて使いましたが、BiMapが私のニーズにうまく収まることがわかりました。私の1つの問題は、BiMapで値をソートする必要があることです。通常は、継承ソートのためにTreeMapを使用していましたが、キーを値のように見えるようにマップを反転することができる必要があります。Guava BiMapの並べ替え

だから私はこれについてあなたの専門家から助言を求めていました。私が見ている解決策は次のとおりです。 1. BiMapコンパレータを作成し、私自身のマップソートユーティリティを使用します。 2.私自身の「BiTreeMap」データ構造を構築します。

私が考慮していない解決法はありますか?私が逃したこれを行うための「グアバの道」はありますか?ありがとう!

答えて

20

現在、ソートされたBiMapタイプはありません。これは動作が少し曖昧です:エントリはキーでソートされますか?値によって?順方向のエントリはキーでソートされ、逆のエントリは値でソートされますか?

現在のところ、唯一の代替方法はImmutableBiMapです。これは、入力する順序を保持しています。ImmutableBiMap.copyOf(Maps.newTreeMap(map))を入力すると、BiMapがキーでソートされます。

(私たちは、もっと真剣にかかわらず、あなたはあなたのユースケースに関する詳細と機能要求を提出した場合、直接BiMapをソート提供を検討することがあります。)答えを

+0

感謝を!私は、TreeMapから派生したImmutableBiMapは十分に基底をカバーすると思います。私はめったにこれをする必要はなく、マップは常に小さくなるため、パフォーマンス上の問題はありません。ちなみに、お尻ライブラリをキックしてください。 – Cody