Welche Datenstruktur ist besser?

broetchen

Erfahrenes Mitglied
moin

Ich muss eine Reihe von Daten, die aus einer DB kommen, abrackern und damit Numbercrunching betreiben.

Es handelt sich dabei um metereologische Daten, die tageweise vorliegen.

Im Moment sieht die Struktur so aus:
Periode
  • Jahr
    • Monat
      • Tag
        • Wert
        • Stunde
          • Wert

Das sind eigene Klassen, die die Stufe darunter als Hashtable bzw. Array drin hat.

Was ist jetzt besser, die Struktur, so wie sie jetzt ist, oder einfach ein riesiges Array aus Tagen!?

mfg broetchen
 
Nein, das geht nicht im geringsten.

Die DB liefert nur die Ausgangsdaten, mit denen dann herumverglichen wird, Ranglisten erstellt werden, interpoliert, ...

Darüber hinau gibt es noch Ausnahmefälle, falls die DB nicht komplett ist. Da müssen dann alternative Quellen herangezogen werden, ...etc.
 
Hallo broetchen,
Hallo Thomas,

Ich wär für eine sich selbst verwaltende Klasse als Container,
damit Du Propertys bereit stellen kannst die zB
  • alles ausrechnen
  • fehlende Messwerte angeben
Und für die Daten eine Klasse auf Collection Basis.
  • Ist erstens schneller
  • Und Du kannst das einfügen doppelter Werte verhindern,
    sofern "alternative Quellen herangezogen werden".
Evtl. würd ich noch die Connection zur DB hier abstract vererben,
da sie quasi die Grundlage für dein Vorhaben darstellt.
Ist aber nicht von Sinn wenn Du sie noch für andere Geschichten brauchst.

MfG, cosmo
 
Ok, dann bleib ich bei meiner jetzigen Struktur.

Der Rest des Programms sieht so aus:
1 GUI-Exe...selbsterklärend

1 DLL mit dem Rest.
Hier gibt's quasi ne 2 Layer-Architektur. Controller, die den Programmablauf regeln (einlesen, auf fehlende Daten checken, alternativ-quellen heranziehen, numbercrunching durchführen...) und quasi-Entitätsklassen (Periode, Jahr, Monat, Tag, Stunde und Wert).

Dann gibt es noch einen Unternamespace für den Datenzugriff, der seinen eigenen Controller hat, der DB-Zugriff und Excel-Files handhabt, Datentypumwandlung betreibt, ...

Für die Größe des Projekts reicht diese Struktur denk ich mal.

mfg broetchen
 
broetchen hat gesagt.:
und quasi-Entitätsklassen (Periode, Jahr, Monat, Tag, Stunde und Wert)
Öhm, willst Du jetzt für jeden Wert eine Klasse bereit stellen?
Währe eine einzige Klasse oder Struktur nicht ausreichend?
Oder hab ich das jetzt falsch verstanden?
 
Ist ein bisschen kompliziert, das jetzt zu erklären.

Es gibt eine Klasse Periode, die kann man als Root ansehen. In ihr sind (in einer SortedList) die Jahr-Objekte abgespeichert.

Das Jahr-Objekt besteht wiederum aus einem Array aus 12 Monatsobjekten.
Das Monatsobjekt beherbergt wieder ein Array aus 28-31 Tag-Objekten.

Das Tag-Objekt besteht aus drei Membern der Klasse Wert und einem Array aus 24 Stunden-Objekten.

Rundherum haben die Klassen noch ein paar Member, die hier jetzt aber nicht interessant wären.

Der Vorteil dieser Struktur ist, dass es wohl nie zu einem Indexüberlauf kommen wird, es sei denn man füllt die Periode so, dass es die SortedList sprengt :suspekt:

Der Nachteil allerdings ist, dass es wahrscheinlich langsamer und schwieriger zu überblicken ist.

Noch ne andere Frage:
Wenn ich mittels for-Schleife die Elemente einer ArrayList abklappere und in der Schleife Elemente entferne, überspringt er dann das Element, dass nach dem entfernten kommt?

mfg broetchen
 
Zurück