Arrays in Java initialisieren

1. Übersicht

In diesem kurzen Tutorial werden wir die verschiedenen Möglichkeiten zum Initialisieren eines Arrays und die subtilen Unterschiede zwischen diesen sehen.

2. Jeweils ein Element

Beginnen wir mit einer einfachen, schleifenbasierten Methode:

for (int i = 0; i < array.length; i++) { array[i] = i + 2; }

Und lassen Sie uns auch sehen, wie wir ein mehrdimensionales Array elementweise initialisieren können:

for (int i = 0; i < 2; i++) { for (int j = 0; j < 5; j++) { array[i][j] = j + 1; } }

3. Zum Zeitpunkt der Erklärung

Lassen Sie uns nun ein Array zum Zeitpunkt der Deklaration initialisieren:

String array[] = new String[] { "Toyota", "Mercedes", "BMW", "Volkswagen", "Skoda" };

Während der Instanziierung des Arrays müssen wir seinen Typ nicht angeben:

int array[] = { 1, 2, 3, 4, 5 };

Beachten Sie, dass es mit diesem Ansatz nicht möglich ist, ein Array nach der Deklaration zu initialisieren. Ein Versuch dazu führt zu einem Kompilierungsfehler.

4. Verwenden von Arrays.fill ()

Die Klasse java.util.Arrays verfügt über mehrere Methoden namens fill (), die verschiedene Arten von Argumenten akzeptieren und das gesamte Array mit demselben Wert füllen:

long array[] = new long[5]; Arrays.fill(array, 30);

Das Verfahren verfügt auch über mehrere Alternativen, mit denen ein Bereich eines Arrays auf einen bestimmten Wert festgelegt wird:

int array[] = new int[5]; Arrays.fill(array, 0, 3, -50);

Beachten Sie, dass die Methode das Array, den Index des ersten Elements, die Anzahl der Elemente und den Wert akzeptiert.

5. Verwenden von Arrays.copyOf ()

Die Methode Arrays.copyOf () erstellt ein neues Array, indem ein anderes Array kopiert wird. Die Methode hat viele Überladungen, die verschiedene Arten von Argumenten akzeptieren.

Sehen wir uns ein kurzes Beispiel an:

int array[] = { 1, 2, 3, 4, 5 }; int[] copy = Arrays.copyOf(array, 5);

Ein paar Anmerkungen hier:

  • Die Methode akzeptiert das Quellarray und die Länge der zu erstellenden Kopie
  • Wenn die Länge größer als die Länge des zu kopierenden Arrays ist, werden die zusätzlichen Elemente mit ihren Standardwerten initialisiert
  • Wenn das Quellarray nicht initialisiert wurde, wird eine NullPointerException ausgelöst
  • Wenn die Länge des Quellarrays negativ ist, wird eine NegativeArraySizeException ausgelöst

6. Verwenden von Arrays.setAll ()

Die Methode Arrays.setAll () setzt alle Elemente eines Arrays mithilfe einer Generatorfunktion:

int[] array = new int[20]; Arrays.setAll(array, p -> p > 9 ? 0 : p); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

Wenn die Generatorfunktion null ist, wird eine NullPointerException ausgelöst.

7. Verwenden von ArrayUtils.clone ()

Verwenden wir abschließend die ArrayUtils.clone () -API aus Apache Commons Lang 3, mit der ein Array durch Erstellen einer direkten Kopie eines anderen Arrays initialisiert wird:

char[] array = new char[] {'a', 'b', 'c'}; char[] copy = ArrayUtils.clone(array);

Beachten Sie, dass diese Methode für alle primitiven Typen überladen ist.

8. Fazit

In diesem Artikel haben wir verschiedene Möglichkeiten zum Initialisieren von Arrays in Java untersucht.

Wie immer ist die Vollversion des Codes auf GitHub verfügbar.