Diferença entre dicionário e Hashtable

Anonim

Dicionário vs Hashtable

O dicionário é digitado (os valores de avaliação não são necessários), um Hashtable não é (s. os valores de avaliação precisam ser obtidos). Hashtable tem uma maneira mais agradável de obter um valor do que o dicionário IMHО, porque sempre vale a pena que o valor seja um оbject. Até se você estiver usando. NET 3. 5, é fácil escrever um método extensivo para o dicionário para obter comportamentos semelhantes.

A classe Hashtable é um tipo específico de classe de dicionário que usa um valor inteiro (chamado de hash) para ajudar na qualidade de suas chaves. A classe Hashtable usa o hash para acelerar a busca por uma chave específica na cоllectiоn. Todo o objeto em. NET deriva da classe Оbject. Esta classe suporta o método GetHash, que retorna um número inteiro que identifica exclusivamente o objeto. A classe Hashtable é uma solução muito eficiente em geral. O único problema com a classe Hashtable é que requer um pouco de cabeçalho, e para pequenas opções (menos de dez elementos), o cabeçalho pode impedir a perfis.

Existe uma maior diferença entre um HashTable e o Dicionário. Se você usar indexadores para obter um valor de um HashTable, o HashTable retornará com êxito nulo para um item inexistente, enquanto o Dicionário irá exibir um erro se você tentar acessar um item usando um indexador que não existe no Dicionário.

O HashTable é a classe base que está tipicamente tipada; a classe abstrata DictionaryBase é digitada apenas e usa internamente um HashTable.

Uma coisa estranha notada no dicionário é, quando adicionamos as múltiplas entradas no Dicionário, o item no qual as entradas são adicionadas é mantido. Assim, se você aplicar um documento no dicionário, você receberá os registros no mesmo item que você inseriu. Considerando que, isso não é verdade com o HashTable Nero, quando você adiciona as mesmas informações no Hashtable, o оrder não é mantido. Se 'Dicionário é baseado no Hashtable' é verdade, por que o Dicionário mantém o item, mas o HashTable não é?

Quanto ao motivo pelo qual eles se comportam de forma diferente, é porque o Dicionário genérico implementa uma hashtable, mas não é baseado no sistema. Células. Hashtable. A implementação do dicionário genérico baseia-se em todos os pares de valores-chave de uma lista. Estes são indexados com os baldes hashtable para o acesso RandMM, mas quando ele retorna um enumerador, ele apenas segue a lista em sequência - o que será o item de inserção, pois as entradas não são reutilizadas.