Variablen und ihre Tücken.

Status
Nicht offen für weitere Antworten.

stetabar

Bekanntes Mitglied
Hallo, ich habe mal ein Frage.

Ich würde gerne eine Java-Klasse mit variablen Ausgaben machen.

Beispiel:

DB
id - label - caption
1 - text1 - mein text1
2 - text2 - mein text2
usw.

Dieser Text wird dann innerhalb von Java an bestimmten Stellen ausgegeben.
So könnte ich allerdings den Text komplett in einer Tabelle belassen und ihn da einfacher bearbeiten.

natürlich könnte ich jetzt alle Felder abzählen, ein Array mit den in der DB angelegten Texten machen. müsste aber jedesmal die .java ändern, wenn ich einen Text dazu nehmen will.

Jetzt meine Frage:
Kann ich ein "undefiniertes Array" erzeugen, dessen Länge ich erst nach Initialisierung des Klasse definiere?
Also ich könnte ja als Bespiel eine Klasse vorher laufen lassen, in der die Anzahl der Elemente ermittelt wird.
Mit "SELECT COUNT(*) as count FROM tabelle"
Aber mit diesem "count" kann ich trotzdem kein dynamisches Array erzeugen. zumindest bin ich noch nicht dahinter gekommen...

Hat da vielleicht jemand einen Tipp für mich?!

Danke

Edit:
Ich muss dieses Array auch an andere Klassen übergeben können. Also sollte es eine Lösung sein, bei der ich das Array übergeben kann und die "unterklasse" den Speicher für dieses Array verwalten kann.
 
Joker hat gesagt.:
siehe FAQ zum Thema Collections:
http://www.java-forum.org/de/viewtopic.php?p=117258 (wobei besonders Vector und ArrayList für dich interessant sein dürften.)

wenn ich das richtig verstehe greife ich auf die klasse "collection" zu, die bereits offene Arrays bietet?!
Die kann ich dann füllen, wie ich will und aus allen Klassen heraus öffnen?!

wenn dem so ist, dann sollte ich mir das mal genauer anschaun!

schonmal besten dank joker!
 
Eine ArrayList (nicht synchronized) oder ein Vector(synchronized) basiert auf einem normalem Array. Dir werden jedoch entsprechende Methoden zur Verfügung gestellt um Elemente hinzuzufügen oder zu entfernen (und noch vieles mehr). Die Größte des Arrays im Hintergrund wird dabei automatisch angepasst, so dass du dich darum nicht kümmern musst (wenn du Sie aber vorher berechnen kannst kann die Anzahl der Elemente im Konstruktor definiert werden, das spart der ArrayList später jedemenge herumkopiererei und ist damit entsprechend performanter).

kleines Beispiel mit den Grundlegenden Funktionen:
Code:
ArrayList<String> liste = new ArrayList<String>();

//Element hinzufügen
liste.add("Element 1");
liste.add("Element 2");

//Zugreifen auf ein Element über get
System.out.println(liste.get(1));

die generics solltest du dir auch anschauen wenn du sie noch nicht kennst(das was zwischen den <> steht).

ps.: finde es aber schon überraschend, dass du das noch nicht kennst mit über 150 Posts hier 😉 Ich denke die meisten hier benutzen mehr Collections als Arrays.
 
tja, irgendwie habe ich immer mit den arrays gearbeitet, aber schön mal was anderes kennen zu lernen... 😉

danke für deine hilfe!
 
Vector kannst du getrost vergessen, ausser wenn du Swing Komponenten nutzt die darauf bestehen icon_wink.gif

Das ist in der Tat der Häufigste Grund, gerade im JTable Umfeld (DefaultTableModel und co) ist alles noch voll auf Vector eingeschossen. Dazu komnen halt die wenigen Fälle wo man die synchronisierung braucht und BlockingQueue nicht passt.

tja, irgendwie habe ich immer mit den arrays gearbeitet, aber schön mal was anderes kennen zu lernen... icon_wink.gif

danke für deine hilfe!

Willkommen im ArrayIndexOutOfBoundsException freiem Zeitalter 😉
 
Das ist in der Tat der Häufigste Grund, gerade im JTable Umfeld (DefaultTableModel und co) ist alles noch voll auf Vector eingeschossen.
Ja, das ist ein Grund für Vector.

Dazu komnen halt die wenigen Fälle wo man die synchronisierung braucht und BlockingQueue nicht passt.
Das ist kein Grund für Vector!

Sieh dir doch mal die synchronized* Methoden in der Collections Klasse an: http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html

Abgesehen davon sollte man die Interfaces verwenden (zB List) um Referenzen zu deklarieren, dann kann man auch zwischen zB. ArraList und LinkedList wechseln und muss nur eine einzige Zeile ändern 😉
Ach ja, Vector implementiert auch List (aber leider auch mehr).
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben