Wie man neue Elemente zu einem Array in Java hinzufügt

Hassan Saeed 12 Oktober 2023
  1. Verwendung von eine ArrayList
  2. Ein neues größeres Array erstellen
Wie man neue Elemente zu einem Array in Java hinzufügt

In diesem Tutorial wird besprochen, wie man in Java neue Elemente zu einem Array hinzufügt.

Array in Java ist ein Container-Objekt, das eine feste Anzahl von Elementen desselben Datentyps enthält. Die Länge des Arrays wird bei der Deklaration des Array-Objekts festgelegt und kann später nicht mehr geändert werden.

Angenommen, wir haben ein Array der Länge 5 in Java mit einigen Werten instanziiert:

String[] arr = new String[5];
arr[0] = "1";
arr[1] = "2";
arr[2] = "3";
arr[3] = "4";
arr[4] = "5";

Nun besteht die Anforderung, ein 6. Element zu unserem Array hinzuzufügen. Versuchen wir nun, dieses 6. Element zu unserem Array hinzuzufügen.

arr[5] = "6";

Die obige Codezeile ergibt den folgenden Fehler:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 5 out of bounds for length 5

Das liegt daran, dass wir das Array anfänglich mit der Größe 5 deklariert haben und versucht haben, ein 6.

Keine Sorge, es gibt 2 mögliche Lösungen, um dies zu erreichen. Wir können eine ArrayList anstelle eines Arrays verwenden oder ein neues größeres Array erstellen, um neue Elemente aufzunehmen.

Verwendung von eine ArrayList

Eine bessere und empfohlene Lösung ist die Verwendung einer ArrayList anstelle eines Arrays, da es größenveränderbar ist. Es gibt keine feste Größe von ArrayList, daher können Sie, wann immer Sie ein neues Element hinzufügen müssen, einfach durch Ausführen von testList.add(element) hinzufügen.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    List<String> testList = new ArrayList<String>();
    testList.add("1");
    testList.add("2");
    testList.add("3");
    testList.add("4");
    testList.add("5");

    // Print the original list
    System.out.println("Initial ArrayList:\n" + testList);
    // Add elements without running into any error
    testList.add("6");
    testList.add("7");

    // Print the list after adding elements
    System.out.println("Modified ArrayList:\n" + testList);
  }
}

Der obige Code gibt folgendes aus.

Initial ArrayList : [ 1, 2, 3, 4, 5 ] Modified ArrayList : [ 1, 2, 3, 4, 5, 6, 7 ]

Oder wenn wir bereits ein Array haben, können wir auch direkt eine ArrayList erstellen.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[1];
    arr[0] = "1";
    // Convert to ArrayList
    List<String> testList = new ArrayList<>(Arrays.asList(arr));

    // Print the original list
    System.out.println("Initial ArrayList:\n" + testList);
    // Add elements to it
    testList.add("2");
    testList.add("3");

    // Print the list after adding elements
    System.out.println("Modified ArrayList:\n" + testList);
  }
}

Der obige Code gibt folgendes aus.

Initial ArrayList : [ 1 ] Modified ArrayList : [ 1, 2, 3 ]

Wir können eine ArrayList leicht zurück in ein Array konvertieren.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[1];
    arr[0] = "1";

    // Convert to ArrayList
    List<String> testList = new ArrayList<>(Arrays.asList(arr));

    // Add elements to it
    testList.add("2");
    testList.add("3");

    // Convert the arraylist back to an array
    arr = new String[testList.size()];
    testList.toArray(arr);
  }
}

Ein neues größeres Array erstellen

Wenn wir darauf bestehen, nur mit Arrays zu arbeiten, können wir die Methode java.util.Arrays.copyOf verwenden, um ein größeres Array zu erstellen und ein neues Element aufzunehmen. Verwenden wir das Array arr, das wir oben erstellt haben, und fügen im Beispiel unten ein neues Element hinzu.

import java.util.*;

public class Main {
  public static void main(String args[]) {
    // Create an array
    String[] arr = new String[5];
    arr[0] = "1";
    arr[1] = "2";
    arr[2] = "3";
    arr[3] = "4";
    arr[4] = "5";

    // print the original array
    System.out.println("Initial Array:\n" + Arrays.toString(arr));

    // Steps to add a new element
    // Get the current length of the array
    int N = arr.length;
    // Create a new array of length N+1 and copy all the previous elements to this new array
    arr = Arrays.copyOf(arr, N + 1);
    // Add a new element to the array
    arr[N] = "6";
    // print the updated array
    System.out.println("Modified Array:\n" + Arrays.toString(arr));
  }
}

Der obige Code gibt Folgendes aus.

Initial Array : [ 1, 2, 3, 4, 5 ] Modified Array : [ 1, 2, 3, 4, 5, 6 ]

Wenn wir später das Bedürfnis verspüren, ein weiteres Element zu arr hinzuzufügen, müssen wir den obigen Code-Block noch einmal wiederholen!

Daher wird diese Lösung nicht empfohlen, da das Hinzufügen jedes neuen Elements eine Zeitkomplexität von O(n) hat, da es alle Elemente aus dem vorherigen Array in ein neues Array kopieren muss. Auf der anderen Seite hat die Hinzufügung jedes neuen Elements mittels ArrayList O(1) amortisierte Kosten pro Operation.

Verwandter Artikel - Java Array