Pergunta

Costumo usar dicionário em C # 2.0 com a primeira chave de cadeia que foi contendo um identificador exclusivo.

Estou aprendendo C # 3.0 + e parece que agora eu posso simplesmente usar uma lista e simplesmente fazer LINQ no objeto para obter o objeto específico (com a .onde ()).

Então, se eu entendi bem, a classe Dictionary perdeu a sua finalidade?

Foi útil?

Solução

não, um dicionário ainda é mais eficiente para fazer as coisas de volta para fora dada uma chave.

uma lista que você ainda tem que percorrer a lista para encontrar o que deseja. Um dicionário faz uma pesquisa.

Outras dicas

Se você só tem uma lista, em seguida, fazendo um LINQ selecionar fará a varredura através de cada item na lista comparando-a com o que você está procurando.

O dicionário no entanto calcula um código de hash da corda que você está procurando (retornado pelo método GetHashCode). Este valor é então usado para procurar a string de forma mais eficiente. Para mais informações sobre como isso funciona consulte Wikipedia .

Se você tiver mais de algumas cordas, o método inicial (lista) vai começar a ficar dolorosamente lento.

IMHO a abordagem dicionário será muito mais rápido do que o LINQ, por isso, se você tiver uma matriz com uma grande quantidade de itens, você deve preferir usar dicionário.

dicionário é implementado como um hashtable. Assim, deve dar acesso constante de tempo para pesquisas. Lista é implementada como uma matriz dinâmica, dando-lhe acesso em tempo linear.

Com base nas estruturas de dados subjacentes, o dicionário deve ainda dar-lhe um melhor desempenho.

documentação do MSDN sobre Dictionary

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

e List

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

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