Initialisierung von Arrays in Java

Arrays in Java initialisieren

1. Überblick

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

2. Ein Element zu einer Zeit

Beginnen wir mit einer einfachen, schleifenbasierten Methode:

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

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

Initialisieren wir jetzt ein Array zum Zeitpunkt der Deklaration:

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

Beim Instanziieren des Arrays muss der Typ nicht angegeben werden:

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, dies zu tun, führt zu einem Kompilierungsfehler.

4. Verwenden vonArrays.fill()

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

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

Die Methode hat auch mehrere Alternativen, die einen Bereich eines Arrays auf einen bestimmten Wert setzen:

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 vonArrays.copyOf()

Die MethodeArrays.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 Quell-Array und die Länge der zu erstellenden Kopie

  • Ist die Länge größer als die Länge des zu kopierenden Arrays, werden die zusätzlichen Elemente mit ihren Standardwerten initialisiert

  • Wenn das Quellarray nicht initialisiert wurde, wird einNullPointerException ausgelöst

  • Wenn die Länge des Quellarrays negativ ist, wird einNegativeArraySizeException ausgelöst

6. Verwenden vonArrays.setAll()

Die MethodeArrays.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 einNullPointerException ausgelöst.

7. Verwenden vonArrayUtils.clone()

Verwenden wir abschließend dieArrayUtils.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 Codesover on GitHub verfügbar.