Array[][] von "aussen" befüllen

qu1et

Grünschnabel
Hallo,

Arbeite gerade an einem Applet welches auf eine grössere Menge von Daten aus einem mehrdimensionalen Array zugreift. Da diese Daten monatlich aktualisiert und ergänzt werden, suche ich nach einer Möglichkeit die Daten von Aussen in das Array zu schieben. Da die Daten ständig abgefragt/verwendet werden kommt es mir vor allem auf Geschwindigkeit/Performance der Lösung an.

Das Array sieht folgendermassen aus:
Code:
   private String[][] data = {
     	   { "cat01", "name", "titel", "YYYY", "format", "serie" },
     	   { "cat02", "name", "titel", "YYYY", "format", "serie" },
      		    ...
      		  };

Könnte mir den Einsatz einer Datenbank vorstellen, aber eine Textdatei sollte es auch leisten.

Würde mich über Anregungen/Tipps/links sehr freuen.

Danke im voraus, q. (Java-neuling)
 
N'Abend,
ich würde Dir empfehlen, eine eigene Klasse anzulegen, deren Objekte "cat01", "name", "titel", "YYYY", "format", "serie" als Attribute haben. Für jeden neuen Datensatz legst Du einfach ein neues Objekt dieser Klasse an und füllst die Attribute dementsprechend.
Diese Objekte legst Du m.E. am besten in einer ArrayList ab. Sie ist im Gegensatz zu einem normalen Array nicht mit einer festen Größe ausgestattet.
 
Mein Anliegen war eigentlich, nach Fertigstellung des Applets nicht mehr an den Code zu müssem um neue Daten hinzuzufügen. Es ging also eher um die Kommunikation zwischen meinem Array und einer externen Datei oder Datenbank. Da ich nicht genau weiß, was performanter/praktischer/nützlicher/sinnvoller ist, hab ich nach Anregungen diesbezüglich gefragt.

Wahrscheinlich war die Frage nicht eindeutig genug. :(
 
Hi qu1et,

also wenn ich ganz ehrlich bin, würde ich das mit einer kleinen Datenbank machen. Ich denke das das einfach performanter ist, vor allem wenn du die Applikation im Netz laufen lassen willst. Das Aktuallisieren der Daten ist mit einer Datenbank auch schneller gemacht.
Ich selbst arbeite viel mit Textdateien, (Auslesen, nach Mustern durchsuchen, konvertieren,...) da merkt man schnell, das es mal wieder etwas länger dauern kann;) .

Meine Empfehlung ist eine Datenbank.
 
hey Zilchinger,

Klingt einleuchtend. Danke für den kleinen Erfahrungsbericht.

Da ein Großteil meiner mysql.datenbanken eh vor sich hin dümpeln, werd ich mal schauen, was ich zum Thema finde. Über hilfreiche Links und Tutorials würd ich mich natürlich weiterhin freuen.
 
Snapes Antwort wäre laut objektorientierter Programmierung die richtige Antwort. Performancetechnisch ist die Array-Variante der Datenbank-Variante vorzuziehen, da die Daten lediglich monatlich aktualisiert werden sollen und scheinbar das Programm immer läuft.

Somit ergibt sich eine HTML-Datei mit Applet-Parametern:

Code:
String[][] as = this.getParameterInfo(); //Abfrage der vorhandenen Parameter
String s = this.getParameter(String name); //Abfrage des Inhaltes des Parameters
 
Hi Schnuffie, danke für deinen Post!

Performance (und OOP) haben auf jeden Fall oberste Priorität, von daher interessiert es mich natürlich sehr, was es mit "einer HTML-Datei mit Applet-Parametern" auf sich hat.

Deinen Code hab ich verstanden (denke ich). Das Prinzip stellt sich mir ungefähr so dar:

(1) Applet bezieht bereits feststehende Daten aus dem Array - wie gehabt.
(2) Neu hinzuzufügende Daten stehen in der das Applet enthaltenden HTML-Datei, und werden via Parameter an das Applet weitergegeben

Falls dass soweit stimmt, ergeben sich für mich folgende Fragen:

(a) Ist es möglich die neuen Daten [haben immer das selbe Format - siehe Beispiel (x)] an das bestehende String Array anzuhängen? Für jedes neue Element würde lediglich eine neue Zeile hinzukommen (pro Monat kommen 1-2 Elemente hinzu).

Code:
      // Beispiel (x) . Zeile für ein Element
       private String[][] data = {
       	 { "cat01", "name", "titel", "YYYY", "format", "serie" }, 
         ...
        };
(b) werden die neuen Elemente, welche als Parameter an das Array weitergegeben werden aus dem Dokument ausgelesen, oder stehen sie als Parameter im Quelltext?

Danke im Voraus, q.
 
Zuletzt bearbeitet:
Also Mischmasch halte ich für keine gute Idee!

Ich würde das "elegant" so lösen (als Beispiel mal ein Parameter):
HTML:
<applet code="Drehbild.class" width=110 height=170>
 <param name="bild" value="steffen.gif,karl.gif,ernst.gif,heinz.gif">
</applet>
Code:
String s = this.getParameter("bild");
StringTokenizer st = new StringTokenizer(s, ",");
String[] as = new String[st.countTokens()];
for (int i = 0; i < as.length && st.hasMoreTokens(); i++) {
  as[i] = st.nextToken();
}

Wenn meine Syntax korrekt ist, stehen alle Bilddateinamen im Array as.

Das kannst Du nun auf Dein Problem entsprechend ummünzen.;-)
 
Zurück