2014-12-12 2 views
1

Стандартная библиотека LinkedHashSet - это HashSet, которая обеспечивает итерацию вставки. Есть ли версия Guava's BiMap, которая поддерживает итерацию ввода-заказа на клавиши и значения? Мне нужно, чтобы BiMap был изменен, поэтому ImmutableBiMap не подходит для моих целей.Есть ли реализация BiMap с предсказуемым упорядочением итераций (порядок вставки)?

+2

Uhm, что должно определять порядок вставки? Я беру его ключи? – fge

+0

Я бы принял ключевое упорядочение, но ключи и значения объединяются, и возникает исключение, если вы попытаетесь установить существующее значение под другим ключом, поэтому я думаю, что практической разницы нет. –

+0

вы могли бы просто реализовать интерфейс бимапа guava самостоятельно, используя два связанных хэшмапа. Наверное, не слишком сложно сделать. –

ответ

2

Единственная доступная реализация - ImmutableBiMap<K,V>. Вы можете проверить реализации here. Вы можете использовать LinkedHashMap и конвертировать его в copyOf(Map<? extends K,? extends V> map), чтобы сделать его ImmutableBiMap<K,V>. Будет ли это работать на вас?

+0

Спасибо, но это не помогает. Я хочу использовать BiMap для удобства использования, но он должен быть изменчивым. Если я поддерживаю другой тип коллекции (или типы, например, две карты), то мне вообще не нужен BiMap. –

+0

Хорошо, Джейк, но нет решения от Guava извините –