O cálculo da singularidade do hashset .NET é completamente baseado nos códigos de hash?

StackOverflow https://stackoverflow.com/questions/2455168

  •  20-09-2019
  •  | 
  •  

Pergunta

Eu queria saber se o .net HashSet<T> baseia -se completamente nos códigos de hash ou se também usa igualdade?

Eu tenho uma classe específica de que posso instanciar milhões de instâncias e há uma chance razoável de que alguns códigos de hash colidam nesse ponto.

Estou pensando em usar o hashset para armazenar algumas instâncias dessa aula e estou me perguntando se vale a pena fazer - se a singularidade de um elemento só é determinada em seu código de hash, então isso não usa aplicações reais para aplicações reais

A documentação do MSDN parece ser bastante vaga sobre esse tópico - qualquer iluminação seria apreciada

Foi útil?

Solução

Não, ele também usa igualdade. Por definição, os códigos de hash não precisam ser únicos - qualquer coisa que assume que eles estarão é quebrada. HashSet<T> é sensato. Ele usa um IEqualityComparer<T> (inadimplente para EqualityComparer<T>.Default) realizar testes de geração de código de hash e igualdade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top