Стандартная библиотека LinkedHashSet
- это HashSet
, которая обеспечивает итерацию вставки. Есть ли версия Guava's BiMap
, которая поддерживает итерацию ввода-заказа на клавиши и значения? Мне нужно, чтобы BiMap
был изменен, поэтому ImmutableBiMap
не подходит для моих целей.Есть ли реализация BiMap с предсказуемым упорядочением итераций (порядок вставки)?
ответ
Единственная доступная реализация - ImmutableBiMap<K,V>
. Вы можете проверить реализации here. Вы можете использовать LinkedHashMap
и конвертировать его в copyOf(Map<? extends K,? extends V> map)
, чтобы сделать его ImmutableBiMap<K,V>
. Будет ли это работать на вас?
Спасибо, но это не помогает. Я хочу использовать BiMap для удобства использования, но он должен быть изменчивым. Если я поддерживаю другой тип коллекции (или типы, например, две карты), то мне вообще не нужен BiMap. –
Хорошо, Джейк, но нет решения от Guava извините –
Uhm, что должно определять порядок вставки? Я беру его ключи? – fge
Я бы принял ключевое упорядочение, но ключи и значения объединяются, и возникает исключение, если вы попытаетесь установить существующее значение под другим ключом, поэтому я думаю, что практической разницы нет. –
вы могли бы просто реализовать интерфейс бимапа guava самостоятельно, используя два связанных хэшмапа. Наверное, не слишком сложно сделать. –