2013-11-09 3 views
3

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

  1. Существует ключ и значение.
  2. И ключ не дублируется,
  3. Каждое значение должно хранить коллекцию объектов, где значения в каждом объекте будут меняться часто.

Спасибо.

+0

HashMap лучше ... вы можете добавить синхронизированный код, если хотите, чтобы он был потокобезопасным для HashMap. вы также можете использовать ConcurrentHashMap (наименее предпочтительный), поскольку он синхронизирован. – Raghu

+0

обратитесь к [docs] (http://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html) –

+0

Похоже, вы хотите [Multimap] (https://code.google. ком/р/гуава-библиотека/вики/NewCollectionTypesExplained # Multimap). –

ответ

7

HashMap должен служить вашим потребностям.

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

Map<String, List<String>> = new HashMap<String, List<String>>(); 

Также существуют реализации такого сбора называется MultiMap т.е. карта, где ключ, связанные с коллекцией значений , Два популярных implemantations из Multimap являются:

  • Apacha MultiMap
  • гуавы MultiMap
+0

не должен ли это быть комментарий? –

+0

Нет, поскольку пользователь спрашивает, какую структуру данных он может использовать. –

+0

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

2

Тип map. Вы не говорите больше, кроме «Мне нужна вещь с ключом». Если вам нужно итерировать карту по порядку вставки, есть LinkedHashMap. Если вам нужно итерировать карту по возрастающим или нисходящим значениям ключей, то есть sorted maps. Если карта будет разделяться несколькими потоками, то будет полезно использовать concurrent map. Если в списке будет миллиард элементов, и вы не возражаете против геморрагирования данных (скажем, это алгоритм кеширования), то WeakHashMap для вас.

Если «ключ не дублируется» означает, что это нарушение, если ключ вставлен, если он уже существует, у вас есть несколько вариантов.

+0

Упс, у вас была старая версия HashMapSet. Исправлена. – Lan

Смежные вопросы