2012-11-05 17 views
15

Sono nuovo nella libreria Guava, ma ho scoperto che BiMap soddisfa perfettamente le mie esigenze. Il mio unico problema è che ho bisogno di ordinare i valori nel mio BiMap. Normalmente, avrei usato una TreeMap a causa del suo ordinamento ereditato, ma essere in grado di invertire la mappa per guardare i tasti come se fossero valori è un must.Ordinamento di un Guava BiMap

Quindi stavo cercando consigli da voi esperti su questo. Le soluzioni che vedo sono: 1. Creare un comparatore BiMap e utilizzare la mia carta di smistamento di utilità. 2. Costruisci la mia struttura dati "BiTreeMap".

C'è una soluzione che non ho considerato? C'è un "modo Guava" per fare questo che mi è mancato? Grazie!

risposta

20

Attualmente non abbiamo un tipo ordinato BiMap perché è un po 'ambiguo come funzionerebbe: le voci sarebbero ordinate in base ai tasti? Dai valori? Le voci di inoltro sarebbero ordinate in base alle chiavi e le voci inverse verranno ordinate in base ai valori?

Attualmente, l'unica vera alternativa disponibile è ImmutableBiMap, che conserva l'ordine che si mette le voci - così ImmutableBiMap.copyOf(Maps.newTreeMap(map)) darebbe un BiMap ordinati per le chiavi.

(Potremmo più seriamente considerare di fornire un ordinato direttamente BiMap se hai archiviato una richiesta di funzionalità con ulteriori informazioni sul vostro caso d'uso, però.)

+0

Grazie per la risposta! Penso che ImmutableBiMap derivata da una TreeMap possa coprire sufficientemente le basi. Raramente ho bisogno di fare questo e la mappa sarà sempre piccola, quindi non sarà un problema di prestazioni. Kick ass library a proposito. – Cody