2014-12-19 2 views
-4

У меня есть два HashMaps:Java - Какой метод hashmap get() будет быстрее и почему?

  1. hashmap1 с 1000 (ключ, значение) пар, таких как (1, один) (2, два) (3, три) (4, четыре) .. (1000, тыс)
  2. hashmap2 с 100000 (ключ, значение) пар, такие как (1, один) (2, два) (3, три) .. (100000, hundredthousand)

который среди следующих двух операций будет Быстрее, а именно. hashmap1.get (100) или hashmap2.get (100) и почему?

+0

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

+2

HashMaps по дизайну имеют производительность O (1) для 'get'. – Sinkingpoint

ответ

3

Они оба будут работать в течение того же времени.

Если вы посмотрите на HashMap API:

Этой реализация обеспечивает постоянная время производительность для основных операций (получить и поставить), предполагая, что хэш-функция рассеивает элементы правильно между ведрами.

0

В дополнение к ответу @azurefrog, я хотел бы сделать это.

Это зависит от определения быстрого. Асимптотически говоря, обе эти операции будут принимать O(1) и не зависят от размера n, то есть 1 или 100 000 или 1 мм.

Но есть интересные последствия, когда мы рассматриваем HashMap в общем смысле. На это могут повлиять и следующие два фактора.

  1. Основополагающий алгоритм хеширования должен быть без конфликтов.
  2. Идентификация объектов выполняется в O (1).

Но для рассматриваемого случая оба теоретически должны брать то же время, если говорить асимптотически.

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