Pretvorba ArrayList v Array v Javi : metode toArray().

Pretvorba ArrayList v Array v Javi : metode toArray().

Za pretvorbo ArrayList v Array lahko uporabite naslednje metode:

arraylist-to-array

1. način: Uporaba metode Object[] toArray().

Sintaksa:

 public Object[] toArray() 
  • Podaja ga toArray v vmesniku Collection in vmesniku List
  • Preglasi toArray v razredu AbstractCollection
  • Vrne matriko, ki vsebuje vse elemente na tem seznamu v pravilnem vrstnem redu.

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 +> ' '> );> > }> }>

Izhod

10 20 30 40 

Opomba: metoda toArray() vrne matriko tipa Object(Object[]). Preden ga uporabimo kot objekte Integer, ga moramo pretvoriti v Integer. Če ne tipiziramo, dobimo napako pri prevajanju.

Razmislite o naslednjem primeru:

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);> > }> }>

Izhod:

19: error: incompatible types: Object[] cannot be converted to Integer[] Integer[] objects = al.toArray(); ^ 1 error 

Zato je priporočljivo ustvariti matriko, v katero je treba shraniti elemente seznama, in jo posredovati kot argument v metodi toArray() za shranjevanje elementov, če je dovolj velika. V nasprotnem primeru se za ta namen dodeli nova matrika iste vrste.

2. način: uporaba T[] vArray(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) 

Upoštevajte, da obstaja parameter matrike in vrnjena vrednost matrike. Glavni namen posredovane matrike je povedati vrsto matrike. Vrnjena matrika je iste vrste kot posredovana matrika.

  • Če ima posredovana matrika dovolj prostora, so elementi shranjeni v tej matriki.
  • Če posredovana matrika nima dovolj prostora, se ustvari nova matrika z isto vrsto in velikostjo danega seznama.
  • Če ima posredovana matrika več prostora, se matrika najprej zapolni z elementi seznama, nato pa se zapolnijo ničelne vrednosti.

Vrže ArrayStoreException, če tip izvajalnega časa a ni nadtip izvajalnega tipa vsakega elementa na tem seznamu.

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 +> ' '> );> > }> }>

Izhod

10 20 30 40 

Opomba: če je podana matrika ničelna, bo vrgla izjemo NullpointerException. Glej to na primer.

3. način: Ročna metoda za pretvorbo ArrayList z uporabo metode get().

To metodo lahko uporabimo, če ne želimo uporabljati Jave v vgrajeni metodi toArray(). To je ročna metoda kopiranja vseh elementov ArrayList v 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 + ' '); } }>

Izhod

10 20 30 40 

4. način: Uporaba API-ja tokov zbirk v Javi 8 za pretvorbo v matriko primitivnega tipa int

To metodo streams() seznama in mapToInt() lahko uporabimo za pretvorbo ArrayList v matriko primitivnega podatkovnega tipa int

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 +> ' '> );> > }> }>

Izhod

10 20 30 40