Konwersja ArrayList na tablicę w Javie: metody toArray().

Konwersja ArrayList na tablicę w Javie: metody toArray().

Do konwersji ArrayList na Array można zastosować następujące metody:

lista tablic na tablicę

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