Pergunta

Quero ser capaz de criar um hashmap de tamanho fixo de, digamos, 100 buckets, e se eu precisar armazenar mais de 100 itens, então colisões e sobrescrições terão que acontecer.A classe hashtable possui uma propriedade IsFixedSize, porém é somente leitura.

Estou pensando nisso de forma completamente errada ou existe uma solução para isso?

Foi útil?

Solução

As coleções na estrutura .NET não permitem muitos ajustes finos.Embora você possa encontrar um eficiente o suficiente para suas necessidades.Experimente alguns viáveis ​​antes de otimizar.

Se você não criar o seu próprio, poderá encontrar uma alternativa de terceiros que tenha controles mais refinados.Por exemplo, veja A biblioteca de coleta genérica C5 para C# e CLI como um possível começo.Verifique no várias classes Hash* em sua página de documentação.

Se você decidir criar o seu próprio, você desejará implementar algumas das interfaces padrão para coleções e/ou listas, enumerações, etc. para que funcionem conforme esperado com C# foreach e recursos de linguagem e .NET.

Você também pode usar uma implementação C++ eficiente se tiver uma e houver maneiras de usá-la em C#/.NET.Pode demorar um pouco, mas há respostas no SO sobre como realizar esse tipo de coisa.

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