„ArrayList“ konvertavimas į masyvą „Java“: toArray() metodai

„ArrayList“ konvertavimas į masyvą „Java“: toArray() metodai

Konvertuojant ArrayList į Array galima naudoti šiuos metodus:

masyvo sąrašas į masyvą

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