Konverzia ArrayList na Array v jazyku Java: metódy toArray().

Konverzia ArrayList na Array v jazyku Java: metódy toArray().

Na konverziu ArrayList na Array je možné použiť nasledujúce metódy:

arraylist-to-array

Metóda 1: Použitie metódy Object[] toArray().

Syntax:

 public Object[] toArray() 
  • Špecifikuje ho toArray v rozhraní Collection a interface List
  • Prepíše toArray v triede AbstractCollection
  • Vráti pole obsahujúce všetky prvky v tomto zozname v správnom poradí.

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

Výkon

10 20 30 40 

Poznámka: Metóda toArray() vracia pole typu Object(Object[]). Pred použitím ako Integer objekty ho musíme pretypovať na Integer. Ak nepretypujeme, dostaneme chybu pri kompilácii.

Zvážte nasledujúci príklad:

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

Výkon:

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

Preto sa odporúča vytvoriť pole, do ktorého je potrebné uložiť prvky zoznamu a odovzdať ho ako argument v metóde toArray() na uloženie prvkov, ak je dostatočne veľké. V opačnom prípade sa na tento účel pridelí nové pole rovnakého typu.

Metóda 2: Použitie 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) 

Všimnite si, že existuje parameter poľa a návratová hodnota poľa. Hlavným účelom odovzdaného poľa je povedať typ poľa. Vrátené pole je rovnakého typu ako odovzdané pole.

  • Ak má odovzdané pole dostatok miesta, prvky sa uložia do tohto poľa.
  • Ak odovzdané pole nemá dostatok miesta, vytvorí sa nové pole s rovnakým typom a veľkosťou daného zoznamu.
  • Ak má odovzdané pole viac miesta, pole sa najskôr vyplní prvkami zoznamu a potom sa vyplnia hodnoty null.

Vyhodí ArrayStoreException, ak typ runtime a nie je nadtypom runtime typu každého prvku v tomto zozname.

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

Výkon

10 20 30 40 

Poznámka: Ak je zadané pole null, vyvolá výnimku NullpointerException. Pozrite si napríklad toto.

Metóda 3: Manuálna metóda na konverziu ArrayList pomocou metódy get().

Túto metódu môžeme použiť, ak nechceme používať javu v vstavanej metóde toArray(). Toto je manuálna metóda kopírovania všetkých prvkov ArrayList do poľa 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 + ' '); } }>

Výkon

10 20 30 40 

Metóda 4: Použitie streamov API kolekcií v java 8 na konverziu na pole primitívneho typu int

Túto metódu streams() zoznamu a mapToInt() môžeme použiť na konverziu ArrayList na pole primitívneho dátového typu 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 +> ' '> );> > }> }>

Výkon

10 20 30 40