Ich versuche, eine Liste von Elementen in einer Sammlung mit einem Schlüssel meiner Wahl zu führen. In Java würde ich Map einfach wie folgt verwenden:
class Test {
Map<Integer,String> entities;
public String getEntity(Integer code) {
return this.entities.get(code);
}
}
Gibt es eine äquivalente Möglichkeit, dies in C # zu tun?
System.Collections.Generic.Hashset
verwendet keinen Hash und ich kann keinen benutzerdefinierten Typschlüssel definieren. Ist
System.Collections.Hashtable
keine generische Klasse,
System.Collections.Generic.Dictionary
hat keine get(Key)
Methode
c#
java
generics
collections
zmbq
quelle
quelle
O(lg(n))
wie Java? Ich denke nichtWörterbuch <,> ist das Äquivalent. Es gibt zwar keine Get (...) -Methode, aber eine indizierte Eigenschaft namens Item, auf die Sie in C # direkt mit der Indexnotation zugreifen können:
Wenn Sie einen benutzerdefinierten Schlüsseltyp verwenden möchten, sollten Sie IEquatable <> implementieren und Equals (Objekt) und GetHashCode () überschreiben, es sei denn, die Standardgleichheit (Referenz oder Struktur) reicht aus, um die Gleichheit der Schlüssel zu bestimmen. Sie sollten Ihren Schlüsseltyp auch unveränderlich machen, um zu verhindern, dass seltsame Dinge passieren, wenn ein Schlüssel nach dem Einfügen in ein Wörterbuch mutiert wird (z. B. weil die Mutation dazu geführt hat, dass sich sein Hashcode geändert hat).
quelle
quelle
TryGetValue
, daval
dieser zugewiesen wirdnull
(dhdefault(string)
), wenn der Schlüssel nicht vorhanden ist.