Перетворення ArrayList в Array у Java: методи toArray().

Перетворення ArrayList в Array у Java: методи toArray().

Для перетворення ArrayList в Array можна використовувати такі методи:

arraylist-to-array

Спосіб 1. Використання методу Object[] toArray().

Синтаксис:

 public Object[] toArray() 
  • Його вказує toArray в колекції інтерфейсу та списку інтерфейсу
  • Він замінює toArray у класі AbstractCollection
  • Він повертає масив, що містить усі елементи цього списку в правильному порядку.

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

Вихід

10 20 30 40 

Примітка: метод toArray() повертає масив типу Object(Object[]). Перш ніж використовувати як об’єкт Integer, нам потрібно привести його до Integer. Якщо ми не виконуємо приведення типу, ми отримуємо помилку компіляції.

Розглянемо такий приклад:

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

Вихід:

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

Тому рекомендується створити масив, у якому потрібно зберігати елементи списку, і передати його як аргумент у методі toArray() для зберігання елементів, якщо він достатньо великий. В іншому випадку для цієї мети виділяється новий масив такого ж типу.

Спосіб 2: використання 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) 

Зауважте, що є параметр масиву та значення, що повертається масивом. Основна мета переданого масиву — повідомити тип масиву. Повернений масив має той самий тип, що й переданий масив.

  • Якщо переданий масив має достатньо місця, то елементи зберігаються в самому цьому масиві.
  • Якщо в переданому масиві недостатньо місця, створюється новий масив із тим самим типом і розміром, що й заданий список.
  • Якщо переданий масив має більше місця, масив спочатку заповнюється елементами списку, а потім заповнюються нульові значення.

Він викидає ArrayStoreException, якщо тип середовища виконання a не є супертипом типу середовища виконання кожного елемента в цьому списку.

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

Вихід

10 20 30 40 

Примітка. Якщо вказаний масив має значення null, він викличе виключення NullpointerException. Подивіться це, наприклад.

Метод 3: ручний метод для перетворення ArrayList за допомогою методу get().

Ми можемо використовувати цей метод, якщо не хочемо використовувати java у вбудованому методі toArray(). Це ручний метод копіювання всіх елементів ArrayList до 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 + ' '); } }>

Вихід

10 20 30 40 

Спосіб 4: використання API потоків колекцій у java 8 для перетворення в масив примітивного типу int

Ми можемо використовувати цей метод streams() списку та mapToInt(), щоб перетворити ArrayList на масив простих даних типу 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 +> ' '> );> > }> }>

Вихід

10 20 30 40