Wie kann ich einen Array initialisieren ohne die Länge des Arrays zu wissen?

6 Antworten

Entweder du versuchst das Array zu einen späteren Zeitpunkt zu initialisieren wo du die Länge kennst, oder du nutzt eine Liste. Listen sind dynamisch und für solche Fälle geeignet.

Woher ich das weiß:Studium / Ausbildung – Softwareentwickler mit 10 Jahren Berufserfahrung 💾

Gar nicht. Das ist der Nachteil bei Arrays.

Dafür kannst du stattdessen ArrayLists nutzen. Natürlich weiß man dann auch, wie viele Elemente zum Erzeugungszeitpung in der Liste sind, aber man kann sie quasi beliebig erweitern und muss sich nicht vorher auf eine Größe festlegen.

Woher ich das weiß:Berufserfahrung – Java-Entwickler von Batch- und Webanwendungen
milos2  05.03.2019, 12:35

Das ist kein Nachteil. Die Datenstrukturen haben unterschiedliche Eigenschaften. Das hat nichts mit Vor- oder Nachteilen zu tun.

0
ZaoDaDong  05.03.2019, 12:36
@milos2

Das ist für bestimmte Anwendungsfälle natürlich ein Nachteil.

2
milos2  05.03.2019, 12:48
@ZaoDaDong

Es ist kein Nachteil, sondern eine Eigenschaft des Arrays.

Es wäre genauso albern zu sagen, dass es bei einem Set den Nachteil gibt, dass es identische Elemente nicht doppelt abspeichern kann. Dabei wäre genau das eine Eigenschaft des Datenstruktur Set.

Man kann nicht von Vor- und Nachteilen in diesem Zusammenhang sprechen.

Das ist für bestimmte Anwendungsfälle natürlich ein Nachteil.

Nein, diese Nachteile ergeben sich nicht aus der Datenstruktur, sondern aus der falschen Wahl einer Datenstuktur. Wenn Du ein Array wählst, aber deine Anforderung ist, dass die Datenstuktur dynamisch wachsen muss, dann hast Du schlichtweg die falsche Datenstruktur gewählt.

0
ZaoDaDong  05.03.2019, 12:51
@milos2

Nämlich eine, die einem zum Nachteil gereicht. Anhand der Frage liegt wohl so eine Situation vor. Daher ist die Wahl des Array hier nachteilhaft. Oder, wie du sagen wüdest: "falsch".

1

Wie bereits erwähnt wurde, gar nicht.

Nutze ArrayList's:

ArrayList<Datentyp/Objekt> list = new ArrayList<>();

Etwas zur Liste hinzufügen:

list.add(Object o);

Get:

list.get(int index);

For-Each-Schleifen gehen auch:

for(Object o : list){
System.out.println(o.toString());
}

Schließlich:

Falls du es dennoch als Array benötigst:

Object[] array = new Object[list.length];
array = list.toArray(array);

Statt "Object" kann natürlich auch jeder Datentyp verwendet werden.

Gar nicht. Das ist nicht der Sinn eines Arrays. Befasse dich mit den Datenstrukturen. Für deine Wahl wäre eine dynamische Datenstruktur sinnvoller, zum Beispiel eine ArrayList.

List<T> liste = new ArrayList<>();

Du weißt die Länge eines array immer mittels a.length (wenn a deine array Variable ist).

Wenn es darum geht, dass du im Vorhinein nicht weißt, wie viele Elemente du brauchst, dann ist ein Array die falsche Datenstruktur.