2 Fragen zu Arrays
Thomas Hartmut
- java
0 NaeZnaL0 Thomas Hartmut0 NaeZnaL0 Thomas Hartmut0 NaeZnaL
0 Slyh0 Thomas Hartmut0 Slyh
0 Slyh
Moin,
ist es möglich ein Array auch so zu deklarieren, dass man vorher nicht weiß wieviele Elemente genau enthalten sein werden? Ich möchte ein dynamisches Programm erstellen, bei dem ich eben vorher nicht weiß wieviele Elemente während der Laufzeit ins Array geschrieben werden. Geht sowas in Java nicht?
Und gibt es für Java auch sowas wie einen implode() Befehl für Arrays oder muss man sich das selbst basteln?
Gruß, Thomas
Hallo,
ein dynamisches Array legst du so an:
int[] dynarray = new int[n];
Das funktioniert natürlich mit jedem beliebigen Datentyp. n ist hierbei die Anzahl der Elemente.
Mit freudlichen Grüßen, NaeZnaL
Aber wenn ich für n 5 gebe, heißt das ja, dass in dem Array maximal 5 Elemente Platz finden, oder? Ich weiß aber vorher nicht obs 5 oder 10 oder 30 werden und einfach auf 1000 oder so setzen erscheint mir irgendwie unprofessionell.
Oder habe ich jetzt was missverstanden?
Hallo,
dann musst du ein neues, größeres Array anlegen, die Daten kopieren und das alte Array wieder löschen. Und das dann jedesmal wenn der Platz nicht mehr reicht.
Mit freudlichen Grüßen, NaeZnaL
Irgendwie erscheint mir das sehr umständlich. Ich fange gerade erst mit Java an, habe bis jetzt eher immer PHP und so verwendet, da ist das irgendwie viel einfacher.
Wozu wird das in Java so gemacht. Um den Speicherverbrauch minimal zu halten? Um die Programme möglichst schnell ablaufen zu lassen?
Hallo,
PHP ist ja auch eine Scriptsprache. Der Interpreter übernimmt dann die meiste Arbeit. Intern wird da genau das gleiche gemacht. Java hingegen ist eine Programmiersprache, welche in selbstständigen Code umgewandelt wird. da musst du es entweder selber Programmieren oder du benutzt eine fertige Klasse.
Mit freudlichen Grüßen, NaeZnaL
Hallo,
dann musst du ein neues, größeres Array anlegen, die Daten kopieren und das alte Array wieder löschen. Und das dann jedesmal wenn der Platz nicht mehr reicht.
Nein.
Gruß
Slyh
Warum, stimmt doch eigentlich, oder? Sonst bekommt man doch eine ArrayOutOfBounds Exception oder so.
Hallo,
Warum, stimmt doch eigentlich, oder? Sonst bekommt man doch eine ArrayOutOfBounds Exception oder so.
Hast du meine andere Antwort gelesen?
Natürlich muß man ein Array umkopieren, wenn das alte zu klein geworden
ist. Aber damit du genau das nicht mehr tun mußt, bietet Java dir die
von mir genannten Klassen an. Intern wird da auch nichts anderes als
ein Array angelegt, das -- sobald es nicht mehr groß genug ist -- durch
ein doppelt so großes ersetzt wird, in das die alten Daten umkopiert
werden.
Ich bezweifle einfach, daß du dir eine eigene Klasse schreiben möchtest,
wenn dir mehr als genug bestehende (und vor allem nachweislich funktionierende)
Klassen bereits zur Verfügung stehen.
Gruß
Slyh
Hallo,
ist es möglich ein Array auch so zu deklarieren, dass man vorher nicht weiß wieviele Elemente genau enthalten sein werden? Ich möchte ein dynamisches Programm erstellen, bei dem ich eben vorher nicht weiß wieviele Elemente während der Laufzeit ins Array geschrieben werden. Geht sowas in Java nicht?
Ja. Sowas nennt sich üblicherweise Vector oder dynamisches Array.
In Java kannst z.B. java.util.Vector oder java.util.ArrayList verwenden.
(Genaugenommen sollte jede konkrete Klasse, die java.util.List
implementiert, dieses Verhalten haben, muß aber nicht.)
Und gibt es für Java auch sowas wie einen implode() Befehl für Arrays oder muss man sich das selbst basteln?
Wenn dir die Ausgabe der toString()-Methode nicht reicht, dann mußt
du ihn dir wohl selbst basteln.
Gruß
Slyh