„ArrayList“ konvertavimas į masyvą „Java“: toArray() metodai
Konvertuojant ArrayList į Array galima naudoti šiuos metodus:
1 metodas: Object[] toArray() metodo naudojimas
Sintaksė:
public Object[] toArray()
- Jį nurodo toArray sąsajos kolekcijoje ir sąsajų sąraše
- Jis nepaiso toArray klasėje AbstractCollection
- Jis grąžina masyvą, kuriame yra visi šio sąrašo elementai teisinga tvarka.
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 +> ' '> );> > }> }> |
Išvestis
10 20 30 40
Pastaba: metodas toArray() grąžina Object(Object[]) tipo masyvą. Prieš naudodami kaip sveikojo skaičiaus objektus, turime jį įvesti į sveikąjį skaičių. Jei nespausdiname tipo, gauname kompiliavimo klaidą.
Apsvarstykite šį pavyzdį:
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);> > }> }> |
Išvestis:
19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error
Todėl rekomenduojama sukurti masyvą, kuriame turi būti saugomi sąrašo elementai, ir perduoti jį kaip argumentą toArray() metodu, kad būtų saugomi elementai, jei jis pakankamai didelis. Kitu atveju šiam tikslui skiriamas naujas to paties tipo masyvas.
2 metodas: T[] naudojimas 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)
Atkreipkite dėmesį, kad yra masyvo parametras ir masyvo grąžinimo reikšmė. Pagrindinis perduodamo masyvo tikslas yra nurodyti masyvo tipą. Grąžintas masyvas yra tokio pat tipo kaip ir perduodamas masyvas.
- Jei perduotame masyve yra pakankamai vietos, elementai saugomi pačiame masyve.
- Jei perduotame masyve nėra pakankamai vietos, sukuriamas naujas masyvas, kurio tipas ir dydis yra tokio paties sąrašo.
- Jei perduotame masyve yra daugiau vietos, masyvas pirmiausia užpildomas sąrašo elementais, tada užpildomos nulinės reikšmės.
Jis meta ArrayStoreException, jei a vykdymo tipas nėra kiekvieno šio sąrašo elemento vykdymo tipo supertipas.
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 +> ' '> );> > }> }> |
Išvestis
10 20 30 40
Pastaba: jei nurodytas masyvas yra nulinis, jis išmes NullpointerException. Žiūrėkite tai, pavyzdžiui.
3 metodas: rankinis metodas konvertuoti ArrayList naudojant get() metodą
Šį metodą galime naudoti, jei nenorime naudoti java integruotame toArray() metode. Tai rankinis būdas nukopijuoti visus ArrayList elementus į 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 + ' '); } }> |
Išvestis
10 20 30 40
4 būdas: „Java 8“ kolekcijų srautų API naudojimas konvertuojant į primityvaus int tipo masyvą
Šį sąrašo metodą srautai () ir mapToInt () galime naudoti norėdami konvertuoti ArrayList į primityvaus duomenų tipo int masyvą
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 +> ' '> );> > }> }> |
Išvestis
10 20 30 40