logo

ArrayList-muunnos arrayksi Javassa: toArray()-menetelmät

Seuraavia menetelmiä voidaan käyttää muuttamaan ArrayList Arrayksi:

taulukkoluettelosta taulukkoon



Tapa 1: Object[] toArray() -menetelmän käyttäminen

Syntaksi:

 public Object[] toArray()>
  • ToArray määrittää sen käyttöliittymäkokoelmassa ja käyttöliittymäluettelossa
  • Se ohittaa toArrayn luokassa AbstractCollection
  • Se palauttaa taulukon, joka sisältää kaikki tämän luettelon elementit oikeassa järjestyksessä.

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

palauttaa taulukon java

>

>

Lähtö

10 20 30 40>

Huomautus: toArray()-metodi palauttaa Object(Object[]-tyypin) taulukon. Meidän on kirjoitettava se kokonaisluvuksi ennen käyttöä kokonaislukuobjekteina. Jos emme kirjoita, saamme käännösvirheen.

Harkitse seuraavaa esimerkkiä:

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

>

>

Lähtö:

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

Siksi on suositeltavaa luoda taulukko, johon List-elementit täytyy tallentaa, ja välittää se argumenttina toArray()-metodissa elementtien tallentamiseksi, jos se on tarpeeksi suuri. Muussa tapauksessa tähän tarkoitukseen varataan uusi samantyyppinen taulukko.

Tapa 2: Käytä 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)>

Huomaa, että on olemassa taulukkoparametri ja taulukon palautusarvo. Lähetetyn taulukon päätarkoitus on kertoa taulukon tyyppi. Palautettu taulukko on samaa tyyppiä kuin välitetty taulukko.

java skanneri
  • Jos hyväksytyssä taulukossa on tarpeeksi tilaa, elementit tallennetaan itse tähän taulukkoon.
  • Jos välitetyssä taulukossa ei ole tarpeeksi tilaa, luodaan uusi taulukko, jolla on sama tyyppi ja koko kuin annettu lista.
  • Jos hyväksytyssä taulukossa on enemmän tilaa, taulukko täytetään ensin listaelementeillä, sitten nolla-arvot.

Se heittää ArrayStoreExceptionin, jos ajonaikainen tyyppi ei ole tämän luettelon jokaisen elementin ajonaikaisen tyypin supertyyppi.

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

>

>

Lähtö

10 20 30 40>

Huomautus: Jos määritetty taulukko on tyhjä, se heittää NullpointerExceptionin. Katso esimerkiksi tämä.

Tapa 3: Manuaalinen menetelmä ArrayListin muuntamiseksi get()-menetelmällä

Voimme käyttää tätä menetelmää, jos emme halua käyttää javaa sisäänrakennetussa toArray()-menetelmässä. Tämä on manuaalinen tapa kopioida kaikki ArrayList-elementit merkkijonotaulukkoon[].

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

>

>

Lähtö

10 20 30 40>

Tapa 4: Kokoelmien streams API käyttäminen Java 8:ssa muuntamiseen primitiivisen int-tyypin taulukkoon

merkkijono java sisältää

Voimme käyttää tätä streams()-lista- ja mapToInt()-menetelmää muuntaaksemme ArrayListin primitiivisen tietotyypin int joukoksi.

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

>

>

Lähtö

10 20 30 40>