web-dev-qa-db-fra.com

Complexité de la recherche HashSet?

Une opération de recherche OR contains pour single peut être O(n) dans le pire des cas, alors? Pour n les éléments recherchent dans hashSet sera O(n^2)?

38
phoenix

Oui, mais c'est vraiment le pire des cas: si tous les éléments du HashSet ont le même code de hachage (ou un code de hachage menant au même compartiment). Avec un hashCode correctement écrit et un échantillon de clé normalement distribué, une recherche est O (1).

61
JB Nizet

Oui, mais la raison pour laquelle nous avons des HashSets est que nous rencontrons ce pire cas avec une très, très faible probabilité, et il est généralement beaucoup plus rapide que le nlogn garanti pour un tas ou un TreeSet (auto-équilibré), ou le n ^ 2 garanti pour une liste non triée.

6
krasnerocalypse