J'essaye de tenir une liste d'articles dans une collection avec une clé de mon choix. En Java, j'utiliserais simplement Map comme suit:
class Test {
Map<Integer,String> entities;
public String getEntity(Integer code) {
return this.entities.get(code);
}
}
Existe-t-il une manière équivalente de faire cela en C #?
System.Collections.Generic.Hashset
n'utilise pas de hachage et je ne peux pas définir une clé de type personnalisée
System.Collections.Hashtable
n'est pas une classe générique
System.Collections.Generic.Dictionary
n'a pas de get(Key)
méthode
c#
java
generics
collections
zmbq
la source
la source
O(lg(n))
que c'est comme celui de Java? Je ne pense pasLe dictionnaire <,> est l'équivalent. Bien qu'il n'ait pas de méthode Get (...), il possède une propriété indexée appelée Item à laquelle vous pouvez accéder en C # directement en utilisant la notation d'index:
Si vous souhaitez utiliser un type de clé personnalisé, vous devez envisager d'implémenter IEquatable <> et de remplacer Equals (object) et GetHashCode () sauf si l'égalité par défaut (référence ou struct) est suffisante pour déterminer l'égalité des clés. Vous devez également rendre votre type de clé immuable pour éviter que des choses étranges ne se produisent si une clé est mutée après avoir été insérée dans un dictionnaire (par exemple parce que la mutation a fait changer son code de hachage).
la source
la source
TryGetValue
, carval
sera attribuénull
(c'est-à-diredefault(string)
) si la clé n'existe pas.