Kann man Array erstellen ohne vorher die Größe zu wissen?

Das Ergebnis basiert auf 2 Abstimmungen

Es geht einfacher aber nicht mit Array 100%
Es geht einfacher mit Array 0%
So ist schon in Ordnung 0%

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
Es geht einfacher aber nicht mit Array

Die Größe eines Arrays muss stets beim Anlegen dessen bekannt sein. So kannst du die Größe später nur noch verändern, indem du ein neues Array (mit korrekter Größe) anlegst und die Werte vom alten Array in das neue Array hineinkopierst.

Anfängern rate ich in diesem Fall eher dazu, dies mit einer Schleife selbst zu lösen, denn es ist eine gute Fingerübung. Verkürzen lässt sich der Prozess allerdings mit copyOf.

Beispiel:

int[] numbers = new int[] { 1, 2, 3, 4, 5, 0, 0 };
int[] selection = Array.copyOf(numbers, 5);

Ansonsten wäre die entgegengesetzte Option, erst die richtige Länge zu berechnen. Normalerweise ist das aber ein zu aufwendiges Verfahren.

Wenn du dynamische Objekte zum Speichern mehrerer Werte haben möchtest, solltest du bspw. Listen verwenden. Dabei solltest du allerdings beachten, dass deine Elemente dann als komplexe Typen abgespeichert werden müssen (z.B. als Object oder in den dazugehörigen Wrapper-Typen deiner Primitive: Integer, Boolean, Character, etc.).

Die Liste lässt sich dennoch später einfach mit der Stream API zu einem Array primitiven Typs umwandeln.

Beispiel:

List<Integer> numbers = new ArrayList<>();
numbers.add(1);
numbers.add(2);
int[] numbersAsArray = numbers.stream().mapToInt(i -> i).toArray();
Es geht einfacher aber nicht mit Array

Nimm vorher List<Integer>, füge Daten hinzu und mache nachher mit der Klasse Arrays daraus ein Integer[].