tlist

___ answer8055730 ___

Wenn Sie die Liste erstellen, können Sie einen Vergleich übergeben. Es gibt einige Vergleichsklassen in der Generics.Defaults-Unit, in der Sie eine anonyme Methode zum Vergleichen zweier Elemente übergeben können. Sie werden für verschiedene Methoden wie IndexOf, Contains oder Sort verwendet.

Beispiel:

%Vor%     
___ qstntxt ___

Ich habe eine Sammlung von

%Vor%

TActivityCategory hat eine Name-Eigenschaft vom Typ string und ich möchte den TList mit der Name-Eigenschaft suchen.

Ich sehe BinarySearch in der TList & lt; & gt; aber das würde eine Instanz von TActivityCategory erfordern. Ich möchte nur die Zeichenfolge für einen Namen übergeben.

Wie würde ich das machen?

    
___ answer8054655 ___

Wenn Sie nicht nach einer Instanz suchen müssen, müssen Sie Ihre eigene Suche durchführen. Es gibt drei grundlegende Möglichkeiten, dies zu tun:

  • Binäre Suche: Implementieren Sie Ihre eigene binäre Suche. Dies funktioniert nur, wenn die Liste sortiert ist.
  • Lineare Suche: Implementieren Sie Ihre eigene lineare Suche. Dies wird immer funktionieren, aber auf großen Listen ist es deutlich langsamer als eine binäre Suche.
  • Wörterbuchsuche: Pflegen Sie neben der Liste ein %code% . Keine Suche erforderlich, aber Sie müssen etwas Code schreiben, um die beiden synchron zu halten.
___ tag123delphi ___ Delphi ist eine Sprache für die schnelle Entwicklung von nativen Windows-, macOS-, Linux-, iOS- und Android-Anwendungen mithilfe von Object Pascal. Der Name bezieht sich sowohl auf die Delphi-Sprache als auch auf deren Bibliotheken, Compiler und IDE, mit denen Delphi-Projekte bearbeitet und debuggt werden können. ___ tag123generics ___ Generika sind eine Form von parametrischer Polymorphie, die in einer Reihe von Sprachen gefunden wird, einschließlich .NET-Sprachen, Java und Swift. ___ tag123list ___ Delphi VCL-Klasse für eine Liste von Zeigern. ___ answer8056308 ___

Um ehrlich zu sein, und unter Berücksichtigung aller für einen komparatorbasierten Ansatz erforderlichen Kesselplatten ist es vielleicht am einfachsten, eine eigene Suchroutine zu schreiben:

%Vor%     
___ qstnhdr ___ Wie suche ich eine generische TListT-Sammlung? [Duplikat] ___
8
Antworten

Wie groß ist der Leistungsunterschied zwischen TList, TObjectList und Plain Array, wenn er geschätzt werden könnte?

* Zusammenfassung: Bitte überprüfen Sie die sachkundigen Kommentare der Delphi-Experten. Speziell für mich würde ich versuchen, die alte TList / TObjectList wie von David vorgeschlagen zu verwenden und die Hard-Cast- und TObjectList.List-Ei...
18.03.2011, 12:32
6
Antworten

Was ist ein effizienter Weg, um einen großen Block von Elementen vom Anfang einer TList in Delphi zu löschen

Löschen (0) von einer TList ist teuer, weil alle nachfolgenden Elemente nach unten bewegt werden müssen. Wenn ich eine große Anzahl von Elementen am Anfang einer noch größeren Liste löschen muss, was ist der schnellste Weg?     
01.12.2011, 22:12
4
Antworten

Warum erzeugt TList.Remove () einen EAccessViolation-Fehler?

Warum wird EAccessViolation beim Ausführen des folgenden Codes ausgelöst? %Vor%     
14.11.2008, 11:22
3
Antworten

Wie suche ich eine generische TListT-Sammlung? [Duplikat]

Ich habe eine Sammlung von %Vor% TActivityCategory hat eine Name-Eigenschaft vom Typ string und ich möchte den TList mit der Name-Eigenschaft suchen. Ich sehe BinarySearch in der TList & lt; & gt; aber das würde eine Instanz von TActi...
08.11.2011, 17:26