Performante Suche in List<T>



  • Hallo,

    ich muss in einer Liste mit sehr vielen Objekten ein Element anhand einer ID suchen!

    Ich mache diese Suche gerade eher unperformant: Nämlich gehe ich jedes Element durch und vergleiche die ID's miteinander. Wenn ich fündig geworden bin, "hüpfe" ich aus der Suche raus!

    Meine Frage ist nun ob es hier für entweder einen guten Algorithmus gibt oder ob es sogar eine Klasse (Hashtable oder ähnliches) dafür gibt!

    Wenn ja, dann würde mich interessieren, wie diese Klassen vorgehen!

    Danke für eure Antworten.
    Schöne Grüße



  • Mit dem Hashtable Vorschlag hast du dir doch schon die Antwort gegeben. Dictionary<K,V> ist als Hashtable implementiert und ist für deinen Anwendungsfall wohl das richtige.



  • Wenn sie sortiert ist kannst Du List<T>.BinarySearch verwenden. Ansonsten SortedList<T> oder wenn Du keinen Comparer bauen willst Dictionary<K,V>. Such mal in der Doku.



  • Für die Benutzung im Dictionary muss Deine Klasse dann noch die Funktion 'GetHashCode' überschreiben und dort die ID zurückgeben.


Anmelden zum Antworten