2 Stimmen

Frage zur Entwurf von Datenstruktur

Ich plane, eine Datenstruktur zu entwerfen, die Elemente wie folgt enthält,

{1, 13, 15, 113, 117, 145}
{2, 23, 27}
{5, 53, 55, 511, 519}
{9, 11}

Ich habe bis jetzt zwei Ideen.

1. Erstellen Sie ein Wörterbuch (Key, Value);

Wenn Key = 1, Value = ArrayList(13, 15, 113, 117, 145)
Wenn Key = 2, Value = ArrayList(23, 27)
Wenn Key = 5, Value = ArrayList(53, 55, 511, 519)
Wenn Key = 9, Value = ArrayList(11)

2. Erstellen Sie eine ArrayList (SubArrayLists)

subArrayList1 {1, 13, 15, 113, 117, 145}
subArrayList2 {2, 23, 27}
subArrayList3 {5, 53, 55, 511, 519}
subArrayList4 {9, 11}

Ich plane, auf das Element zuzugreifen, wenn die Laufzeit ansteht. Welche Lösung ist besser?

Danke für Ihre Kommentare.

[Aktualisiert]
1. Die oben aufgeführten int Zahlen können für einige Objekte stehen. wie z.B. Wörterbuchobjekt usw.
2. Alle Daten werden nach dem Start der Anwendung im Speicher geladen. Dann ist nur das Lesen gestattet. Es ist nicht erforderlich zu schreiben/hinzuzufügen/löschen usw.

3voto

abhilash Punkte 5545

Wie wäre es mit einem Jagged Array? http://msdn.microsoft.com/en-us/library/2s05feca.aspx

Zugriff auf Elemente über einen Array-Index ist O(1).

2voto

Nitin Kumar Punkte 109

Es hängt davon ab, was für dich wichtiger ist, schnellere Lese- oder schnellere Schreibgeschwindigkeiten? Ein Wörterbuch bietet einen sehr schnellen Zugriff auf gespeicherte Werte, aber das Hinzufügen von Werten zum Wörterbuch dauert länger.

Wenn du viele Werte hast, auf die häufig zugegriffen werden muss, ist das Wörterbuch der richtige Weg, wenn du dich dabei siehst, eine Liste von Werten innerhalb einer anderen Schleife zu durchlaufen, zum Beispiel:

foreach(var item in ListeA)
{
  foreach(var item in ListeB)
  {
     // Abgleichen aller Werte in Liste B        

  }
}

In dem obigen Beispiel wäre es am besten, wenn Liste B anstelle einer Liste ein Wörterbuch ist, da du die Liste bei jeder Iteration von ListeA durchläufst. Mit zunehmender Anzahl von Elementen in ListeB wird die Ausführungszeit des obigen Codes steigen. Wenn es jedoch ein Wörterbuch ist, wird es nicht viel Unterschied machen.

2voto

Upul Bandara Punkte 5845

Wenn Sie zufälligen Zugriff vornehmen möchten, ist Dictionary eine gute Option. Aber bitte denken Sie daran, dass Sie eindeutige Schlüssel benötigen (da Sie das erste Element jeder Liste als Schlüssel verwenden sollten, sollte das erste Element jeder Liste eindeutig sein).

Wenn Sie auf die Elemente der Datenstruktur sequenziell zugreifen möchten, ist ArrayList besser.

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