ArrayList-zu-Array-Konvertierung in Java: toArray()-Methoden

ArrayList-zu-Array-Konvertierung in Java: toArray()-Methoden

Die folgenden Methoden können zum Konvertieren von ArrayList in Array verwendet werden:

Arraylist-zu-Array

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