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.