Сортировка Guava BiMap

Я новичок в библиотеке Guava, но обнаружил, что BiMap отлично подходит для моих потребностей. Моя единственная проблема в том, что мне нужно сортировать значения в моем BiMap. Обычно я использовал TreeMap из-за его сортировки наследования, но возможность инвертировать карту для поиска ключей, как если бы они были значениями, является обязательным.

Итак, я искал советы от вас, эксперты об этом. Решения, которые я вижу, это:  1. Создайте компаратор BiMap и используйте мою собственную утилиту сортировки карт.  2. Создайте собственную структуру данных "BiTreeMap".

Есть ли решение, которое я не рассматривал? Есть ли способ "Гуава", который я пропустил? Спасибо!

Ответы

Ответ 1

В настоящее время у нас нет отсортированного типа BiMap, потому что он немного неоднозначен, как он будет работать: будут ли сортировки записей ключами? По значениям? Будут ли сортировки по прямым ключам отсортированы по клавишам, а обратные записи будут отсортированы по значениям?

В настоящее время единственной доступной альтернативой является ImmutableBiMap, которая сохраняет порядок, в который вы помещаете записи, поэтому ImmutableBiMap.copyOf(Maps.newTreeMap(map)) предоставит вам BiMap, отсортированную по клавишам.

(Мы могли бы более серьезно рассмотреть вопрос о предоставлении отсортированного напрямую BiMap, если вы отправили запрос функции с более подробной информацией о вашем случае использования.)