Konwersja ArrayList na tablicę w Javie: metody toArray().
Do konwersji ArrayList na Array można zastosować następujące metody:
Metoda 1: Użycie metody Object[] toArray().
Składnia:
public Object[] toArray()
- Jest on określony przez toArray w kolekcji interfejsów i liście interfejsów
- Zastępuje toArray w klasie AbstractCollection
- Zwraca tablicę zawierającą wszystkie elementy tej listy we właściwej kolejności.
Jawa
// 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 +> ' '> );> > }> }> |
Wyjście
10 20 30 40
Uwaga: metoda toArray() zwraca tablicę typu Object(Object[]). Musimy rzutować go na liczbę całkowitą przed użyciem jako obiektów typu Integer. Jeśli nie wykonamy rzutowania, otrzymamy błąd kompilacji.
Rozważ następujący przykład:
Jawa
// 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);> > }> }> |
Wyjście:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
Dlatego zaleca się utworzenie tablicy, w której mają być przechowywane elementy Listy i przekazanie jej jako argumentu w metodzie toArray() w celu przechowywania elementów, jeśli jest ona wystarczająco duża. W przeciwnym wypadku przydzielana jest w tym celu nowa tablica tego samego typu.
Metoda 2: Używanie 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)
Zauważ, że istnieje parametr tablicowy i wartość zwracana przez tablicę. Głównym celem przekazywanej tablicy jest określenie typu tablicy. Zwrócona tablica jest tego samego typu, co przekazana tablica.
- Jeśli przekazana tablica ma wystarczającą ilość miejsca, elementy są przechowywane w samej tablicy.
- Jeśli przekazana tablica nie ma wystarczającej ilości miejsca, tworzona jest nowa tablica tego samego typu i rozmiaru co podana lista.
- Jeśli przekazana tablica ma więcej miejsca, tablica jest najpierw wypełniana elementami listy, a następnie wypełniane są wartości null.
Zgłasza wyjątek ArrayStoreException, jeśli typ środowiska wykonawczego a nie jest nadtypem typu środowiska wykonawczego każdego elementu na tej liście.
Jawa
// 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 +> ' '> );> > }> }> |
Wyjście
10 20 30 40
Uwaga: Jeśli określona tablica ma wartość null, zgłosi wyjątek NullpointerException. Zobacz to na przykład.
Metoda 3: Ręczna metoda konwersji ArrayList przy użyciu metody get().
Możemy skorzystać z tej metody, jeśli nie chcemy używać języka Java w wbudowanej metodzie toArray(). Jest to ręczna metoda kopiowania wszystkich elementów ArrayList do String Array[].
// Returns the element at the specified index in the list. public E get(int index)
Jawa
// 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 + ' '); } }> |
Wyjście
10 20 30 40
Metoda 4: Użycie strumieniowego interfejsu API kolekcji w Javie 8 do konwersji na tablicę pierwotnego typu int
Możemy użyć tej metody streams() listy i mapToInt() do konwersji ArrayList na tablicę pierwotnego typu danych int
int[] arr = list.stream().mapToInt(i ->i).toArray();
Jawa
// 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 +> ' '> );> > }> }> |
Wyjście
10 20 30 40