Konvertering fra ArrayList til Array i Java: toArray()-metoder

Konvertering fra ArrayList til Array i Java: toArray()-metoder

Følgende metoder kan brukes for å konvertere ArrayList til Array:

arraylist-to-array

Metode 1: Bruke Object[] toArray()-metoden

Syntaks:

 public Object[] toArray() 
  • Det er spesifisert av toArray i interface Collection og interface List
  • Den overstyrer tilArray i klassen AbstractCollection
  • Den returnerer en matrise som inneholder alle elementene i denne listen i riktig rekkefølge.

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

Produksjon

10 20 30 40 

Merk: toArray()-metoden returnerer en matrise av typen Object(Object[]). Vi må typecaste det til Integer før vi bruker det som Integer-objekter. Hvis vi ikke typecaster, får vi kompileringsfeil.

Tenk på følgende eksempel:

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

Produksjon:

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

Det anbefales derfor å lage en matrise som elementer i List må lagres i og sende den som et argument i toArray()-metoden for å lagre elementer hvis den er stor nok. Ellers tildeles en ny array av samme type for dette formålet.

Metode 2: Bruke 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) 

Merk at det er en matriseparameter og en matrisereturverdi. Hovedformålet med bestått array er å fortelle typen array. Den returnerte matrisen er av samme type som bestått matrise.

  • Hvis den beståtte matrisen har nok plass, lagres elementene i selve denne matrisen.
  • Hvis den beståtte matrisen ikke har nok plass, opprettes en ny matrise med samme type og størrelse som gitt liste.
  • Hvis den beståtte matrisen har mer plass, fylles matrisen først med listeelementer, deretter fylles nullverdier.

Det kaster ArrayStoreException hvis kjøretidstypen til a ikke er en supertype av kjøretidstypen til hvert element i denne listen.

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

Produksjon

10 20 30 40 

Merk: Hvis den angitte matrisen er null, vil den kaste NullpointerException. Se dette for eksempel.

Metode 3: Manuell metode for å konvertere ArrayList ved å bruke get()-metoden

Vi kan bruke denne metoden hvis vi ikke vil bruke java i bygget toArray()-metoden. Dette er en manuell metode for å kopiere alle ArrayList-elementene til 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 + ' '); } }>

Produksjon

10 20 30 40 

Metode 4: Bruke streams API av samlinger i java 8 for å konvertere til array av primitiv int-type

Vi kan bruke denne streams()-metoden for list og mapToInt() for å konvertere ArrayList til array av primitiv datatype 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 +> ' '> );> > }> }>

Produksjon

10 20 30 40