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

Hassan Saeed 30 Januar 2023 4 Oktober 2020 Java Java Array
  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

  • So konvertieren Sie Byte-Array in Hex-String in Java
  • Wie man zwei Arrays in Java verkettet
  • Entfernen Sie Duplikate aus dem Array in Java
  • Assoziatives Array in Java
  • Vergleichen Arrays in Java
  • Slicen ein Array in Java