2012-11-05 18 views
15

Ich bin neu in der Guava-Bibliothek, aber habe festgestellt, dass die BiMap meine Bedürfnisse gut erfüllt. Mein einziges Problem ist, dass ich die Werte in meiner BiMap sortieren muss. Normalerweise hätte ich eine TreeMap aufgrund seiner Sortierung verwendet, aber es ist ein Muss, die Map zu invertieren, um die Schlüssel zu betrachten, als wären sie Werte.Sortieren einer Guava BiMap

Also ich war auf der Suche nach Rat von Ihnen Experten über dies zu tun. Die Lösungen, die ich sehe, sind: 1. Erstellen Sie einen BiMap-Vergleicher und verwenden Sie mein eigenes Kartensortierungsprogramm. 2. Erstellen Sie meine eigene BiTreeMap-Datenstruktur.

Gibt es eine Lösung, die ich nicht berücksichtigt habe? Gibt es einen "Guava-Weg", den ich verpasst habe? Vielen Dank!

Antwort

20

Wir haben derzeit keinen sortierten BiMap Typ, weil es ein wenig mehrdeutig ist, wie es funktionieren würde: Würden die Einträge nach Schlüsseln sortiert werden? Durch die Werte? Wären die Forward-Einträge nach Schlüsseln sortiert und die Inversen nach den Werten sortiert?

Derzeit ist die einzige wirkliche Alternative verfügbar ist ImmutableBiMap, die die Reihenfolge, die Sie die Einträge in setzen behält - so ImmutableBiMap.copyOf(Maps.newTreeMap(map)) Sie eine BiMap durch die Tasten sortiert geben würde.

(Wir könnten mehr ernsthaft in Erwägung ziehen Bereitstellung einer direkt BiMap sortiert, wenn Sie eine Feature-Anfrage mit mehr Details über Ihren Anwendungsfall eingereicht, though.)

+0

Danke für die Antwort! Ich denke, die von einer TreeMap abgeleitete ImmutableBiMap würde die Basen ausreichend abdecken. Ich muss das selten tun und die Karte wird immer klein sein, also wird es kein Leistungsproblem sein. Kick ass Bibliothek übrigens. – Cody