Структура данных Java, которая имеет постоянное время доступа и допускает дублирование

1

HashMap имеет постоянное время доступа, но не позволяет дублировать. ArrayList позволяет дублировать, но не имеет постоянного времени доступа.

Есть ли структура данных в java, которая обеспечивает постоянное время доступа и позволяет дублировать?

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

Заранее спасибо.

  • 2
    HashMap<Key,List<Value>> ?
  • 0
    Вам нужна карта или коллекция?
Показать ещё 2 комментария
Теги:
duplicates
hashmap
constant-time

2 ответа

1

Вы можете использовать сумку из коллекций GS, Multiset из Google Guava или сумку из коллекций Amal Commons. Сумка в основном представляет собой Map<Key, Integer> которая ведет себя как коллекция.

Все три библиотеки имеют Multimaps. Мультимап - это в основном Map<Key, Collection<V>>, где вызывается, чтобы поместить результаты в дополнение к Collection<V> вместо замены значения на этом ключе. Существуют разные типы Multimap (List, Set, Bag и т.д.).

Примечание. Я разработчик коллекций GS

1

ArrayList#set ArrayList#get и ArrayList#set - это фактически постоянное время, а также несколько других функций. Прочтите документацию, второй абзац документации по классу:

Операции size, isEmpty, get, set, iterator и listIterator выполняются в постоянное время

Следующим вариантом будет мультимап. Это карта, в которой хранятся элементы в виде ключа/коллекции. Коллекция содержит значения, поэтому одна ключевая карта для нескольких значений. Вы можете посмотреть в Apache Common MultiMap чтобы узнать, есть ли у них реализация, которая работает для вас. Или вы всегда можете создавать свои собственные, просто определяя коллекцию как значение:

Map<String, List<String>> multimap;
  • 0
    Запрос содержимого для ArrayList займет время. Это один случай, который я пытаюсь удовлетворить.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню