2012-11-05 7 views
15

Jestem nowy w bibliotece Guava, ale odkryłem, że BiMap ładnie pasuje do moich potrzeb. Moim jedynym problemem jest to, że muszę posortować wartości w mojej BiMap. Zwykle używałbym mapy drzewa z powodu dziedziczenia sortowania, ale możliwość odwrócenia mapy, aby spojrzeć na klawisze tak, jakby były wartościami, jest koniecznością.Sortowanie guawy BiMap

Więc szukałem porady od was, ekspertów o tym, jak to zrobić. Rozwiązania, które widzę to: 1. Utwórz komparator BiMap i użyj mojego własnego narzędzia do sortowania map. 2. Zbuduj moją własną strukturę danych "BiTreeMap".

Czy istnieje rozwiązanie, którego nie rozważałem? Czy istnieje "sposób Guava", aby to zrobić, że tęskniłem? Dzięki!

Odpowiedz

20

Obecnie nie mamy posortowanego rodzaju BiMap, ponieważ jest trochę niejednoznaczny, jak by to działało: czy wpisy będą sortowane według kluczy? Według wartości? Czy wpisy do przodu zostaną posortowane według kluczy, a pozycje odwrotne posortowane według wartości?

Obecnie jedyną realną alternatywą jest dostępny ImmutableBiMap, który zachowuje kolejność które można umieścić w pozycji - tak ImmutableBiMap.copyOf(Maps.newTreeMap(map)) dałby ci BiMap Weaver kluczy.

(Możemy bardziej poważnie rozważyć zapewniając bezpośrednio klasyfikowane BiMap jeśli złożył wniosek fabularny z większą ilością szczegółów na przypadek użycia, choć.)

+0

Dzięki za odpowiedź! Myślę, że ImmutableBiMap pochodząca z TreeMap wystarczająco pokryłaby podstawy. Rzadko trzeba to robić, a mapa zawsze będzie mała, więc nie będzie to problem z wydajnością. Kopnij bibliotekę tyłek przy okazji. – Cody