Conversie ArrayList în Array în Java: Metode toArray().
Următoarele metode pot fi utilizate pentru conversia ArrayList în Array:
Metoda 1: Folosind metoda Object[] toArray().
Sintaxă:
public Object[] toArray()
- Este specificat de toArray în Interfață Collection și Interfață List
- Acesta suprascrie toArray în clasa AbstractCollection
- Returnează o matrice care conține toate elementele din această listă în ordinea corectă.
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 +> ' '> );> > }> }> |
Ieșire
10 20 30 40
Notă: metoda toArray() returnează o matrice de tip Object(Object[]). Trebuie să-l tipărim la Integer înainte de a folosi ca obiecte Integer. Dacă nu tipărim, obținem o eroare de compilare.
Luați în considerare următorul exemplu:
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);> > }> }> |
Ieșire:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
Prin urmare, este recomandat să creați o matrice în care elementele List trebuie să fie stocate și să o transmiteți ca argument în metoda toArray() pentru a stoca elemente dacă este suficient de mare. În caz contrar, o nouă matrice de același tip este alocată în acest scop.
Metoda 2: Folosind 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)
Rețineți că există un parametru de matrice și o valoare de returnare a matricei. Scopul principal al matricei transmise este de a spune tipul de matrice. Matricea returnată este de același tip ca și matricea transmisă.
- Dacă matricea transmisă are suficient spațiu, atunci elementele sunt stocate în această matrice în sine.
- Dacă matricea transmisă nu are suficient spațiu, este creată o nouă matrice cu același tip și dimensiunea listei date.
- Dacă matricea transmisă are mai mult spațiu, matricea este mai întâi umplută cu elemente de listă, apoi valorile nule sunt completate.
Aruncă ArrayStoreException dacă tipul de rulare al a nu este un supertip al tipului de rulare al fiecărui element din această listă.
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 +> ' '> );> > }> }> |
Ieșire
10 20 30 40
Notă: Dacă matricea specificată este nulă, atunci va arunca NullpointerException. Vezi asta de exemplu.
Metoda 3: Metoda manuală pentru a converti ArrayList folosind metoda get().
Putem folosi această metodă dacă nu dorim să folosim java în metoda construită toArray(). Aceasta este o metodă manuală de copiere a tuturor elementelor ArrayList în 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 + ' '); } }> |
Ieșire
10 20 30 40
Metoda 4: Utilizarea fluxurilor API de colecții în java 8 pentru a converti în matrice de tip int primitiv
Putem folosi această metodă streams() de listă și mapToInt() pentru a converti ArrayList în matrice de tip de date primitive 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 +> ' '> );> > }> }> |
Ieșire
10 20 30 40