ArrayList to Array Conversion i Java: toArray()-metoder

ArrayList to Array Conversion i Java: toArray()-metoder

Följande metoder kan användas för att konvertera ArrayList till Array:

arraylist-to-array

Metod 1: Använder metoden Object[] toArray().

Syntax:

 public Object[] toArray() 
  • Det specificeras av toArray i interface Collection och interface List
  • Den åsidosätter toArray i klassen AbstractCollection
  • Den returnerar en array som innehåller alla element i denna lista i rätt ordning.

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

Produktion

10 20 30 40 

Obs: metoden toArray() returnerar en array av typen Object(Object[]). Vi måste typcasta det till Integer innan vi använder det som Integer-objekt. Om vi ​​inte typcastar får vi kompileringsfel.

Tänk på följande exempel:

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

Produktion:

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

Det rekommenderas därför att skapa en array i vilken element i List måste lagras och skicka den som ett argument i toArray()-metoden för att lagra element om den är tillräckligt stor. Annars tilldelas en ny array av samma typ för detta ändamål.

Metod 2: Använd 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) 

Observera att det finns en arrayparameter och arrayreturvärde. Huvudsyftet med godkänd array är att berätta vilken typ av array. Den returnerade arrayen är av samma typ som passerad array.

  • Om den passerade arrayen har tillräckligt med utrymme, lagras element i själva arrayen.
  • Om den passerade arrayen inte har tillräckligt med utrymme skapas en ny array med samma typ och storlek som en given lista.
  • Om den passerade arrayen har mer utrymme, fylls arrayen först med listelement, sedan fylls null-värden.

Det kastar ArrayStoreException om runtime-typen för a inte är en supertyp av runtime-typen för varje element i den här listan.

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

Produktion

10 20 30 40 

Obs: Om den angivna arrayen är null kommer den att kasta NullpointerException. Se detta till exempel.

Metod 3: Manuell metod för att konvertera ArrayList med metoden get().

Vi kan använda den här metoden om vi inte vill använda java i den inbyggda metoden toArray(). Detta är en manuell metod för att kopiera alla ArrayList-element till 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 + ' '); } }>

Produktion

10 20 30 40 

Metod 4: Använda streams API för samlingar i java 8 för att konvertera till array av primitiv int-typ

Vi kan använda denna streams()-metod för list och mapToInt() för att konvertera ArrayList till array av primitiv datatyp 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 +> ' '> );> > }> }>

Produktion

10 20 30 40