13 Stimmen

Welche Delphi-Datenstruktur kann eine Liste von eindeutigen Ganzzahlen enthalten?

Wenn ich Java-Probleme angehe, verwende ich das Sammelmuster. Allerdings ist das in Delphi ein ziemlicher Alptraum, da es kein Integer-Objekt gibt, um die Dinge zu handhaben.

Ich brauche eine Datenstruktur, die Zahlen enthält. Ich möchte in der Lage sein, Zahlen hinzuzufügen, Zahlen zu entfernen und den Inhalt der Sammlung zu überprüfen, und jede Zahl muss eindeutig sein.

Ich bin nicht an einer Lösung interessiert, die ich selbst implementieren und auf Fehler testen muss. Gibt es ein fertiges Objekt wie die HashTable von Java?

4voto

Toby Allen Punkte 10652

Sie können eine TList verwenden, um eine Reihe von Ganzzahlen zu speichern. Sie ist eigentlich für die Speicherung von Zeigern gedacht, aber da Zeiger nur ganze Zahlen sind, funktioniert sie auch bei der Speicherung ganzer Zahlen.

2voto

Schnider Punkte 93

Delphi hat Einheit mxarrays (Decision Cube), es gibt eine Klasse TIntArray, setzen Sie es Eigenschaft Duplicates zu dupIgnore. Sie kann auch Werte sortieren. Wenn Sie es verwenden wollen, siehe Quality Central Bericht #:2703 um den Fehler in diesem Gerät zu beheben.

1voto

Linas Punkte 5335

Ich persönlich empfehle dringend, mit der DeCAL zum Speichern von Daten. Es hat DMap Container, die fast jeden Datentyp verarbeiten kann, ist selbst optimiert, weil es interne Red-Black Baum verwendet und es wird nicht zulassen, dass Sie Duplikate hinzufügen (wenn Sie Duplikate einfügen müssen, können Sie DMultiMap verwenden). Eine weitere großartige Sache mit DMap ist, dass das Finden von Elementen in der Liste sehr schnell ist (viel schneller als in TStringList). Die Arbeit mit DeCal ist etwas anders als mit anderen Delphi-Bibliotheken, aber wenn Sie sich einmal damit vertraut gemacht haben, werden Sie keine StringList mehr in Ihrem Code verwenden.

Bearbeiten: ältere Version von DeCAL ist auf SourceForge aber hier finden Sie eine tolle pdf-Anleitung.

0voto

radu122 Punkte 2766

Ja, die gibt es, sie heißt TDictionary

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X