69 votes

Quelle est la complexité temporelle de HashMap.containsKey() en Java ?

J'ai besoin de savoir : quelle est la complexité temporelle de HashMap.containsKey() en Java ?

16voto

mishadoff Points 6034

Généralement O (1), mais si nous utilisons une mauvaise fonction hashCode, nous devons ajouter plusieurs éléments à un seau afin qu'il puisse être O(n) dans le pire des cas.

11voto

Jigar Joshi Points 116533

C'est O(1) en général, mais dans le pire des cas c'est O(n)

  public boolean containsKey(Object key) {
  352           return getEntry(key) != null;
  353       }
  354   
  355       /**
  356        * Returns the entry associated with the specified key in the
  357        * HashMap.  Returns null if the HashMap contains no mapping
  358        * for the key.
  359        */
  360       final Entry<K,V> getEntry(Object key) {
  361           int hash = (key == null) ? 0 : hash(key.hashCode());
  362           for (Entry<K,V> e = table[indexFor(hash, table.length)];
  363                e != null;
  364                e = e.next) {
  365               Object k;
  366               if (e.hash == hash &&
  367                   ((k = e.key) == key || (key != null && key.equals(k))))
  368                   return e;
  369           }
  370           return null;
  371       }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X