Quelle est la complexité du temps de recherche de HashSet & lt; T & gt; (IEqualityComparer & lt; T & gt;)?

Dans C#.NET, j'aime HashSets en raison de leur supposée O(1) temps de complexité pour les recherches. Si j'ai un grand ensemble de données qui va être interrogé, j'ai préfèrent le plus souvent à l'aide d'un HashSet à une Liste, car il a cette fois de la complexité.

Ce qui me confond est le constructeur de la HashSet, qui prend IEqualityComparer comme argument:

http://msdn.microsoft.com/en-us/library/bb359100.aspx

Dans le lien ci-dessus, les remarques notez que le constructeur est un O(1)," mais si c'est le cas, je suis curieux de savoir si la recherche est toujours en O(1).

En particulier, il me semble que, si je devais écrire un Comparateur à passer dans le constructeur d'un HashSet, à chaque fois que j'effectue une recherche, le Comparateur code devra être exécutée sur chaque touche pour vérifier pour voir si il y avait un match. Ce ne serait pas en O(1) O(n).

La mise en œuvre interne de la construction d'une table de recherche lorsque des éléments sont ajoutés à la collection?

En général, comment pourrais-je vérifier les informations à propos de la complexité de l' .NET des structures de données?

source d'informationauteur Kirby