Java Array-größe variabel lassen

xActionx

Software-Overclocker(in)
Java Array-größe variabel lassen

Hey Leute,

wollte mal aus reinem Interesse fragen ob es möglich ist die Array-größe in Java variabel zu lassen. Ich habe mir schon Array-listen angeschaut und die wollte ich erstmal außen vor lassen.

Also dass ich quasi die Größe des Arrays erstmal undefiniert (variabel) lasse und das Array mit so vielen Werten fülle bis keine Werte mehr nachkommen. Quasi ohne einen maximalen Index zu definieren.

Vielen Dank schonmal.

MFG
 
AW: Java Array-größe variabel lassen

Das ist leider nicht möglich. Beim Erstellen des Arrays musst du immer eine Größe angeben. Im Zweifelsfall musst du diese eben groß genug wählen.
Alternativ wäre eine Variable, die vom Nutzer in die Methode bzw. den Konstruktor eingetragen wird und er somit vor der Befüllung des Arrays eine Größe wählt.

Ansonsten würde ich dir die Array List empfehlen, da braucht man keine Größe angeben.
 
AW: Java Array-größe variabel lassen

Das ist leider nicht möglich. Beim Erstellen des Arrays musst du immer eine Größe angeben. Im Zweifelsfall musst du diese eben groß genug wählen.
Alternativ wäre eine Variable, die vom Nutzer in die Methode bzw. den Konstruktor eingetragen wird und er somit vor der Befüllung des Arrays eine Größe wählt.

Ansonsten würde ich dir die Array List empfehlen, da braucht man keine Größe angeben.

Okay vielen Dank dann werde ich wohl auf die List zugreifen, denn wenn ich sonst alle Werte mit einer for-Schleife auslese, bekomm ich bei allen nicht eingetragenen Werten nur Nullen zurück...
 
AW: Java Array-größe variabel lassen

Java kennt zwar späte Bindung, solang die Datenstruktur ein klassisches Array ist musst du aber trotzdem in dem Moment wo du es das erste mal füllst wissen wie groß es ist.
Das hängt einfach an der Speicherverwaltung. Wenn plötzlich mehr in das Array rein soll müsste dafür wieder Speicher besorgt werden etc.. Wenn aber 99% diese Möglichkeit nicht nutzen ist das nur Verschwendung von Rechenleistung der Klasse diese Möglichkeit zu geben.
Stattdessen gibt es gesonderte Klasse mit einer solchen Funktion. Eben dynamische Arrays, z.B. in Form der von dir schon genannten ArrayList.

Je nach dem was du genau vor hast stellt sich eher die Frage ob du den "Array" Teil einer ArrayList überhaupt brauchst.
 
AW: Java Array-größe variabel lassen

Lässt sich theoretisch mit einer if-Anweisung ( if(array!=null){System.out ....} abfangen, ist dann aber unnötiger Rechenaufwand.
Da ist eine Array-List besser.
 
AW: Java Array-größe variabel lassen

Die am häufigsten genutzten dynamische Datenstrukturen in Java sind mit Sicherheit das ArrayList und der Vector. Letzterer ist ziemlich ähnlich dem std::vector in c und thread-safe.
 
AW: Java Array-größe variabel lassen

Variables Array? Entweder ArrayList oder das Array jedes mal neu mit aktualisierten Werten in ein Zwischen-Array speichern und dann wieder in das Ursprüngliche zurück, bzw. die Referenz ändern.

Anders wird das wohl nicht realisierbar sein ;)

Gruß Domme
 
AW: Java Array-größe variabel lassen

Du könntest mit einem Array mit sagen wir mal Grösse 10 anfangen.
Wenn die Methode hasNext() = false zurück kommt, einfach ein neues Array machen wo 10 grösser ist und das alte Array ins neue schreiben.
 
AW: Java Array-größe variabel lassen

Du könntest mit einem Array mit sagen wir mal Grösse 10 anfangen.
Wenn die Methode hasNext() = false zurück kommt, einfach ein neues Array machen wo 10 grösser ist und das alte Array ins neue schreiben.

Genau das macht eine ArrayList oder Vector ;)
Wenn du die Größe der Liste oft oder kontinuierlich änderst ist eine LinkedList performanter da weniger kopiert werden muss :daumen:
 
AW: Java Array-größe variabel lassen

Wenn du die Größe der Liste oft oder kontinuierlich änderst ist eine LinkedList performanter da weniger kopiert werden muss :daumen:

Leider nein. In der Theorie ist es in gewissen Anwendungen besser, ja. Aber auf modernen PCs ist es unglaublich wichtig, zusammenhängenden Speicher zu haben, dass ein Vector (fast) immer die deutlich schnellere Variante ist. Ernsthaft.
 
AW: Java Array-größe variabel lassen

Leider nein. In der Theorie ist es in gewissen Anwendungen besser, ja. Aber auf modernen PCs ist es unglaublich wichtig, zusammenhängenden Speicher zu haben, dass ein Vector (fast) immer die deutlich schnellere Variante ist. Ernsthaft.

Je nach Größe würde ich das bejahen. Aber bei kleineren Datensätzen macht es performancetechnisch keinen großen Unterschied.

Haben das glaube ich sogar mal in der Uni nachgemessen. Ist schon etwas her.
Da ging es glaub ich um Datenstrukturen und deren Sortierung ^^


Domme
 
AW: Java Array-größe variabel lassen

Leider nein. In der Theorie ist es in gewissen Anwendungen besser, ja. Aber auf modernen PCs ist es unglaublich wichtig, zusammenhängenden Speicher zu haben, dass ein Vector (fast) immer die deutlich schnellere Variante ist. Ernsthaft.

Das ist auf "große" Datensätze bezogen, das meinte ich mit oft und kontinuierlich. Zusammenhängender Speicher ist immer schneller da die Einträge auf der gleichen Page sind (bzw. auf der nächsten). Wenn du aber irgendwann extrem große Datensätze hast (>1.000.000 o.ä.) wird es irgendwann schwierig. Jedes mal wenn der aktuelle Speicherbereich nicht mehr ausreicht wird alles kopiert, dann geht die Performance in den Keller. Es kann sein das eine ArrayList nach einer gewissen Größe einen neuen Speicherblock anfängt und so die Kopiererei reduziert, da bin ich aber überfragt.
 
AW: Java Array-größe variabel lassen

Hier ein Video zum Thema: https://www.youtube.com/watch?v=0iWb_qi2-uI#t=44m40s

Kurz zusammengefasst: Man nimmt immer zuerst eine ArrayList. Erst wenn man ein Performanceproblem hat und gemessen hat, dass eine LinkedList besser ist, nur dann greift man LinkedList (oder einer anderen Datenstruktur).

Danke. Jetzt sind wir alle ein bisschen schlauer ;)

Hach man lernt halt nie aus.

@crys_
Das mit der Größe hab ich überlesen ;)
Sry ;)
 
Zurück