# Java Array-größe variabel lassen



## xActionx (29. Juni 2015)

*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


----------



## kress (29. Juni 2015)

*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.


----------



## xActionx (29. Juni 2015)

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



kress schrieb:


> 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...


----------



## Olstyle (29. Juni 2015)

*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.


----------



## kress (29. Juni 2015)

*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._


----------



## Malkolm (29. Juni 2015)

*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.


----------



## dommebaum (1. Juli 2015)

*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


----------



## taks (1. Juli 2015)

*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.


----------



## crys_ (10. Juli 2015)

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



taks schrieb:


> 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


----------



## Crysis nerd (11. Juli 2015)

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



crys_ schrieb:


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



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.


----------



## dommebaum (14. Juli 2015)

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



Crysis nerd schrieb:


> 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


----------



## crys_ (15. Juli 2015)

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



Crysis nerd schrieb:


> 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.


----------



## nay (15. Juli 2015)

*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).


----------



## dommebaum (31. Juli 2015)

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



nay schrieb:


> 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


----------

