Conversion d'ArrayList en tableau en Java : méthodes toArray()

Conversion d'ArrayList en tableau en Java : méthodes toArray()

Les méthodes suivantes peuvent être utilisées pour convertir ArrayList en Array :

liste de tableaux vers tableau

Méthode 1 : Utilisation de la méthode Object[] toArray()

Syntaxe:

 public Object[] toArray() 
  • Il est spécifié par toArray dans l'interface Collection et l'interface List
  • Il remplace toArray dans la classe AbstractCollection
  • Il renvoie un tableau contenant tous les éléments de cette liste dans le bon ordre.

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 +> ' '> );> > }> }>

Sortir

10 20 30 40 

Remarque : la méthode toArray() renvoie un tableau de type Object(Object[]). Nous devons le transtyper en Integer avant de l'utiliser comme objets Integer. Si nous ne transtypons pas, nous obtenons une erreur de compilation.

Prenons l'exemple suivant :

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);> > }> }>

Sortir:

19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error 

Il est donc recommandé de créer un tableau dans lequel les éléments de List doivent être stockés et de le transmettre comme argument dans la méthode toArray() pour stocker les éléments s'il est suffisamment grand. Sinon, un nouveau tableau du même type est alloué à cet effet.

Méthode 2 : utilisation de 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) 

Notez qu'il existe un paramètre de tableau et une valeur de retour de tableau. L'objectif principal du tableau transmis est d'indiquer le type du tableau. Le tableau renvoyé est du même type que le tableau transmis.

  • Si le tableau transmis dispose de suffisamment d'espace, alors les éléments sont stockés dans ce tableau lui-même.
  • Si le tableau transmis n'a pas suffisamment d'espace, un nouveau tableau est créé avec le même type et la même taille que la liste donnée.
  • Si le tableau transmis a plus d'espace, le tableau est d'abord rempli d'éléments de liste, puis les valeurs nulles sont remplies.

Il lève ArrayStoreException si le type d'exécution de a n'est pas un supertype du type d'exécution de chaque élément de cette liste.

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 +> ' '> );> > }> }>

Sortir

10 20 30 40 

Remarque : Si le tableau spécifié est nul, il lancera NullpointerException. Voir ceci par exemple.

Méthode 3 : méthode manuelle pour convertir ArrayList à l’aide de la méthode get()

Nous pouvons utiliser cette méthode si nous ne voulons pas utiliser Java dans la méthode toArray() construite. Il s'agit d'une méthode manuelle de copie de tous les éléments ArrayList dans 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 + ' '); } }>

Sortir

10 20 30 40 

Méthode 4 : Utilisation de l'API Streams des collections dans Java 8 pour convertir en tableau de type int primitif

Nous pouvons utiliser cette méthode streams() de list et mapToInt() pour convertir ArrayList en tableau de type de données primitif int

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 +> ' '> );> > }> }>

Sortir

10 20 30 40