ArrayList konvertēšana uz masīvu Java: toArray() metodes
ArrayList konvertēšanai uz Array var izmantot šādas metodes:
1. metode: Object[] toArray() metodes izmantošana
Sintakse:
public Object[] toArray()
- ToArray norāda interfeisa kolekcijā un interfeisa sarakstā
- Tas ignorē toArray klasē AbstractCollection
- Tas atgriež masīvu, kurā ir visi šī saraksta elementi pareizā secībā.
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 +> ' '> );> > }> }> |
Izvade
10 20 30 40
Piezīme: metode toArray() atgriež Object(Object[]) tipa masīvu. Pirms izmantošanas kā vesela skaitļa objektus, mums tas ir jāievada kā vesels skaitlis. Ja mēs nedrukājam, mēs saņemam kompilācijas kļūdu.
Apsveriet šādu piemēru:
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);> > }> }> |
Izvade:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
Tāpēc ir ieteicams izveidot masīvu, kurā jāsaglabā saraksta elementi, un nodot to kā argumentu metodē toArray (), lai saglabātu elementus, ja tas ir pietiekami liels. Pretējā gadījumā šim nolūkam tiek piešķirts jauns tāda paša veida masīvs.
2. metode: izmantojot 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)
Ņemiet vērā, ka ir masīva parametrs un masīva atgriešanas vērtība. Nodotā masīva galvenais mērķis ir norādīt masīva veidu. Atgrieztais masīvs ir tāda paša veida kā nodotajam masīvam.
- Ja nodotajam masīvam ir pietiekami daudz vietas, elementi tiek glabāti pašā šajā masīvā.
- Ja nodotajā masīvā nav pietiekami daudz vietas, tiek izveidots jauns masīvs ar tāda paša veida un lieluma norādīto sarakstu.
- Ja nodotajā masīvā ir vairāk vietas, masīvs vispirms tiek aizpildīts ar saraksta elementiem, pēc tam tiek aizpildītas nulles vērtības.
Tas izmet ArrayStoreException, ja izpildlaika tips a nav katra šī saraksta elementa izpildlaika tipa supertips.
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 +> ' '> );> > }> }> |
Izvade
10 20 30 40
Piezīme: ja norādītais masīvs ir nulle, tas izmetīs NullpointerException. Skatiet, piemēram, šo.
3. metode: manuāla metode ArrayList konvertēšanai, izmantojot metodi get().
Mēs varam izmantot šo metodi, ja nevēlamies izmantot Java iebūvētajā toArray () metodē. Šī ir manuāla metode visu ArrayList elementu kopēšanai uz 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 + ' '); } }> |
Izvade
10 20 30 40
4. metode: kolekciju straumēšanas API izmantošana Java 8, lai pārveidotu par primitīva int tipa masīvu
Mēs varam izmantot šo streams() saraksta metodi un mapToInt(), lai pārveidotu ArrayList par primitīva datu tipa int masīvu.
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 +> ' '> );> > }> }> |
Izvade
10 20 30 40