logo

Konverze ArrayList na Array v Javě: metody toArray().

Pro převod ArrayList na Array lze použít následující metody:

arraylist-to-array

Metoda 1: Použití metody Object[] toArray().



Syntax:

 public Object[] toArray()>
  • Je specifikováno toArray v rozhraní Collection a interface List
  • Přepíše toArray ve třídě AbstractCollection
  • Vrátí pole obsahující všechny prvky v tomto seznamu ve správném pořadí.

Jáva




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

co je podání adresáře

>

>

Výstup

10 20 30 40>

Poznámka: Metoda toArray() vrací pole typu Object(Object[]). Před použitím jako objekty typu Integer jej musíme přetypovat na Integer. Pokud nepřetypujeme, dostaneme chybu kompilace.

Zvažte následující příklad:

Jáva




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

>

>

tostring v jazyce Java

Výstup:

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

Proto se doporučuje vytvořit pole, do kterého je třeba uložit prvky Listu, a předat jej jako argument v metodě toArray() pro uložení prvků, pokud je dostatečně velké. Jinak je pro tento účel přiděleno nové pole stejného typu.

Metoda 2: Použití 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šimněte si, že existuje parametr pole a návratová hodnota pole. Hlavním účelem předávaného pole je sdělit typ pole. Vrácené pole je stejného typu jako předané pole.

  • Pokud má předané pole dostatek místa, prvky se uloží do tohoto pole samotného.
  • Pokud předané pole nemá dostatek místa, vytvoří se nové pole stejného typu a velikosti jako daný seznam.
  • Pokud má předané pole více místa, pole je nejprve vyplněno prvky seznamu a poté jsou vyplněny hodnoty null.

Vyvolá výjimku ArrayStoreException, pokud typ běhového prostředí a není nadtypem běhového typu každého prvku v tomto seznamu.

Jáva




// 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ýstup

10 20 30 40>

Poznámka: Pokud je zadané pole null, vyvolá výjimku NullpointerException. Viz například toto.

Metoda 3: Manuální metoda pro převod ArrayList pomocí metody get().

Tuto metodu můžeme použít, pokud nechceme používat javu ve vestavěné metodě toArray(). Toto je ruční metoda kopírování všech prvků ArrayList do String Array[].

// Returns the element at the specified index in the list. public E get(int index)>

Jáva




// 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ýstup

10 20 30 40>

Metoda 4: Použití streamů API kolekcí v java 8 k převodu na pole primitivního typu int

Tuto metodu streams() seznamu a mapToInt() můžeme použít k převodu ArrayList na pole primitivního datového typu int

int[] arr = list.stream().mapToInt(i ->i).toArray();>

Jáva




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

>

>

konverze typu a casting v jazyce Java
Výstup

10 20 30 40>