Estou tentando manter uma lista de itens em uma coleção com uma chave de minha escolha. Em Java, eu simplesmente usaria o Map da seguinte maneira:
class Test {
Map<Integer,String> entities;
public String getEntity(Integer code) {
return this.entities.get(code);
}
}
Existe uma maneira equivalente de fazer isso em c #?
System.Collections.Generic.Hashset
não usa hash e não consigo definir uma chave de tipo personalizado
System.Collections.Hashtable
não é uma classe genérica
System.Collections.Generic.Dictionary
não tem um get(Key)
método
c#
java
generics
collections
zmbq
fonte
fonte
O(lg(n))
como o Java? Eu acho que nãoDicionário <,> é o equivalente. Embora não tenha um método Get (...), ele possui uma propriedade indexada chamada Item que você pode acessar diretamente em C # usando a notação de índice:
Se você deseja usar um tipo de chave personalizado, considere implementar IEquatable <> e substituir Equals (objeto) e GetHashCode (), a menos que a igualdade padrão (referência ou estrutura) seja suficiente para determinar a igualdade de chaves. Você também deve tornar seu tipo de chave imutável para evitar que coisas estranhas aconteçam se uma chave for alterada após ser inserida em um dicionário (por exemplo, porque a mutação causou alterações no código de hash).
fonte
fonte
TryGetValue
, poisval
será atribuídonull
(ou sejadefault(string)
) se a chave não existir.