2014-12-08 3 views
-1

У меня есть вопрос относительно наилучшей практики использования Collection относительно памяти. Мне нужно вызвать метод, который часто возвращает пары (Key, Value), и какой путь является лучшим, используя HashMap или создавая объект, содержащий ключ и значение, и сохраните этот объект в HashSet?Java Collection HashSet vs HashMap

Thanks & С уважением.

+3

Ответ на вопрос «какая структура данных я должен использовать» всегда «зависит от того, что вам нужно с ней делать». Можете ли вы рассказать о своих потребностях? – Mureinik

+0

Пожалуйста, обратитесь к этому руководству, надейтесь, что это поможет вам лучше. http://www.java2novice.com/java-collections-and-util/ –

+0

Оба подхода имеют свои применения, и это может зависеть от того, является ли ключ концептуально «частью» значения (HashSet) или независимым от него (HashMap). –

ответ

4

Это зависит от того, нужно ли искать структуру данных на основе ключа или ключа и значения.

  • Если вы будете искать в одиночку ключа (т.е. map.containsKey(key)), вы должны использовать HashMap.

  • Если вы ищете существование пары ключ-значение (т. Е. set.contains(new Pair(key,value)), вы должны использовать HashSet, который содержит эти пары.

Еще одна вещь, которую следует учитывать, - определить, как вы определяете уникальность элементов. Если он определяется только одним ключом, вы должны использовать HashMap. Если он определяется как ключом, так и значением (т. Е. Вы можете иметь один и тот же ключ дважды с разными значениями), вы должны использовать HashSet, так как HashhMap не позволяет один и тот же ключ появляться более одного раза.

+0

вы также можете добавить некоторые специальные функции к вашему объекту «ключевое значение», если необходимо – Milkmaid

+0

Спасибо всем, мне нужно сохранить ключ и значения без дублирования, а объекты, которые сохраняли до 10 объектов на вызов метода, но вызов будет часто 1 раз в секунду, поэтому я хочу использовать способ, который меньше потребляет память. – Hazim

+2

@Hazim Но как вы собираетесь получить доступ к этой структуре данных? Собираетесь ли вы перебирать все данные или искать наличие определенных значений? И вы позволяете одному и тому же ключу дважды появляться с разными значениями? – Eran

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