ArrayList-zu-Array-Konvertierung in Java: toArray()-Methoden
Die folgenden Methoden können zum Konvertieren von ArrayList in Array verwendet werden:
Methode 1: Verwendung der Object[] toArray()-Methode
Syntax:
public Object[] toArray()
- Es wird von toArray in der Schnittstellensammlung und der Schnittstellenliste angegeben
- Es überschreibt toArray in der Klasse AbstractCollection
- Es gibt ein Array zurück, das alle Elemente dieser Liste in der richtigen Reihenfolge enthält.
Java
// Java program to demonstrate working of> // Objectp[] toArray()> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > Object[] objects = al.toArray();> > // Printing array of objects> > for> (Object obj : objects)> > System.out.print(obj +> ' '> );> > }> }> |
Ausgabe
10 20 30 40
Hinweis: Die Methode toArray() gibt ein Array vom Typ Object(Object[]) zurück. Wir müssen es in Integer umwandeln, bevor wir es als Integer-Objekte verwenden können. Wenn wir keine Typumwandlung durchführen, erhalten wir einen Kompilierungsfehler.
Betrachten Sie das folgende Beispiel:
Java
// A Java program to demonstrate that assigning Objects[]> // to Integer[] causes error.> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > // Error: incompatible types: Object[]> > // cannot be converted to Integer[]> > Integer[] objects = al.toArray();> > for> (Integer obj : objects)> > System.out.println(obj);> > }> }> |
Ausgabe:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
Es wird daher empfohlen, ein Array zu erstellen, in dem Elemente der Liste gespeichert werden müssen, und es als Argument in der Methode toArray() zu übergeben, um Elemente zu speichern, wenn es groß genug ist. Andernfalls wird zu diesem Zweck ein neues Array desselben Typs allokiert.
Methode 2: Verwenden von T[] toArray(T[] a)
// Converts a list into an array arr[] and returns same. // If arr[] is not big enough, then a new array of same // type is allocated for this purpose. // T represents generic . public T[] toArray(T[] arr)
Beachten Sie, dass es einen Array-Parameter und einen Array-Rückgabewert gibt. Der Hauptzweck des übergebenen Arrays besteht darin, den Typ des Arrays anzugeben. Das zurückgegebene Array ist vom gleichen Typ wie das übergebene Array.
- Wenn das übergebene Array über genügend Platz verfügt, werden Elemente in diesem Array selbst gespeichert.
- Wenn das übergebene Array nicht über genügend Speicherplatz verfügt, wird ein neues Array mit demselben Typ und derselben Größe wie die angegebene Liste erstellt.
- Wenn das übergebene Array mehr Platz hat, wird das Array zuerst mit Listenelementen gefüllt, dann werden Nullwerte gefüllt.
Es löst eine ArrayStoreException aus, wenn der Laufzeittyp von a kein Supertyp des Laufzeittyps jedes Elements in dieser Liste ist.
Java
// A Java program to convert an ArrayList to arr[]> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > Integer[] arr => new> Integer[al.size()];> > arr = al.toArray(arr);> > for> (Integer x : arr)> > System.out.print(x +> ' '> );> > }> }> |
Ausgabe
10 20 30 40
Hinweis: Wenn das angegebene Array null ist, wird eine NullpointerException ausgelöst. Sehen Sie sich dies zum Beispiel an.
Methode 3: Manuelle Methode zum Konvertieren von ArrayList mit der Methode get()
Wir können diese Methode verwenden, wenn wir in der gebauten toArray()-Methode kein Java verwenden möchten. Dies ist eine manuelle Methode zum Kopieren aller ArrayList-Elemente in das String Array[].
// Returns the element at the specified index in the list. public E get(int index)
Java
// Java program to convert a ArrayList to an array> // using get() in a loop.> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > Integer[] arr => new> Integer[al.size()];> > // ArrayList to Array Conversion> > for> (> int> i => 0> ; i arr[i] = al.get(i); for (Integer x : arr) System.out.print(x + ' '); } }> |
Ausgabe
10 20 30 40
Methode 4: Verwenden der Streams-API von Sammlungen in Java 8 zum Konvertieren in ein Array vom primitiven Typ int
Wir können diese streams()-Methode von list und mapToInt() verwenden, um ArrayList in ein Array des primitiven Datentyps int zu konvertieren
int[] arr = list.stream().mapToInt(i ->i).toArray();
Java
// Java program to convert a ArrayList to an array> // using streams()> import> java.io.*;> import> java.util.List;> import> java.util.ArrayList;> class> GFG {> > public> static> void> main(String[] args)> > {> > List al => new> ArrayList();> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 40> );> > // ArrayList to Array Conversion> > int> [] arr = al.stream().mapToInt(i ->i).toArray();> > for> (> int> x : arr)> > System.out.print(x +> ' '> );> > }> }> |
Ausgabe
10 20 30 40