2009-07-01 15 views
0

Ich habe viele IDs und ich möchte sie für einen temporären Zweck speichern und müssen diesen Datensatz für einige Operation suchen. Welche Datenstruktur eignet sich für diesen Vorgang in Perl? Sollte ich einen Hash oder ein Array verwenden, oder gibt es ein anderes Modul, das ich effizient verwenden könnte?Beste Datenstruktur für die Suche Datensatz

Die Datensätze sind 4343, 34343, 34343, 2323, 232, ....

+0

Es ist nicht klar, was Sie tun möchten. Sie möchten vielleicht beschreiben, welche Art von Daten Sie speichern möchten und wie Sie darauf zugreifen möchten. – hillu

+0

Ich habe 10000 Datensätze und speichern in einer Datenstruktur und wollen diese Datensätze suchen – joe

+0

Ich habe IDs und reterive von d-Datenbank und speichern Sie in einem Daten strtrucure und suchen Sie einige der Datensätze – joe

Antwort

3

Ein wenig mehr Informationen zu Ihrem Plattenlayout würden Ihnen helfen, Ihnen zu helfen. Wenn Ihre Unterlagen ID-Nummern verbunden sind, dann können Sie einen Hash mit dem ‚id‘ als Schlüssel verwenden, und speichern Sie die Aufzeichnung als String oder ein Array Referenz als Hash-Wert

my %records; 
$records{ $id_number } = "Record for $id_number"; 
## OR 
$records{ $id_number } = ['Record', 'for', $id_number]; 

Dies ermöglicht es Ihnen zum Nachschlagen IDs mit Komplexität O (1) und leicht manipulieren den entsprechenden Datensatz.

# Assuming the records are stored in @records 
for my $record (@records) { 
    $recStore{$record}++; 
} 

# To search for a record 
my $recToFind = 4343; 
my $recExists = $recStore{$recToFind} || 0; 

Die Schlüssel des Hash sind der von id aus der Datenbank abgerufen und die entsprechenden Werte sind die Anzahl, wie oft die ID gefunden, so dass für Aufzeichnungen Wiederholung $ recExists als 1 größer sein wird, und für nicht existent records es wird gleich 0 sein. Um eine Liste aller IDs numerisch sortiert zu erhalten, könnten Sie schreiben

my @sortedID = sort {$a <=> $b} keys %records; 
+0

Wie zu speichern und IDs und Suche ID .. zum Beispiel. Ich möchte 4343 nach dem gespeicherten suchen. Könnten Sie bitte erklären – joe

+0

Könnten Sie die Details von einem Datensatz aufnehmen? Dies würde mir erlauben, einen Speichermechanismus zu formulieren, der für die Aufgabe geeignet ist. – aks

+0

Ich bekomme den Wert in $ Reocrd = 10 – joe

Verwandte Themen