В Java существует множество ситуаций, когда список должен быть преобразован в массив (например, функция, которая принимает только массив в качестве параметра вместо коллекции). Это преобразование выполняется с помощью метода toArray ()
интерфейса List.
Есть два варианта этого метода:
1. toArray()
Этот метод возвращает массив типа Object []
, элементы которого находятся в той же последовательности, что и они находятся в списке. Приведение используется для указания типа каждого элемента при выполнении некоторых операций.
Код
import java.util.ArrayList; public class ListToArray {public static void main (String [] args) {//Список размеров 4, который необходимо преобразовать: ArrayList list = new ArrayList (); list.add (1); list.add (2); list.add (3); list.add (4);// ArrayList преобразован в Object [] array: Object [] objArr = list.toArray (); for (Object obj: objArr) {//Использование приведения перед выполнением добавления: System.out.println ((Integer) obj + 1); }}}
2. toArray (T [] arr)
Этот вариант того же метода принимает в качестве параметра уже определенный массив. Когда размер массива больше или равен размеру списка, то массив заполняется элементами списка. В противном случае будет создан и заполнен новый массив. Поскольку тип возвращаемого массива определяется типом параметра, преобразование не требуется. Однако ArrayStoreException генерируется, если какой-либо элемент в списке не может быть преобразован в указанный тип.
Код
import java.util.ArrayList; public class ListToArray {public static void main (String [] args) {//Список размером 4, который будет преобразовано: список массивов список = новый список массивов (); список.add (2); список.адд (3); список.адд (4); список.адд (5); //Объявление массива размером 4: Integer [] arr = new Integer [4]; //Передача объявленного массива в качестве параметра: list.toArray (arr); //Печать всех элементов массива: System.out.println ("Printing 'arr':"); for (Integer i: arr) System.out. println (я); //Объявление другого массива недостаточного размера: Integer [] arr2 = new Integer [3]; //Передача массива в качестве параметра: Integer [] arr3 = list.toArray (arr2); //Печать переданного массива: System.out.println (" n'arr2 'не заполняется, потому что он маленький:"); for (Целое число i: arr2) System.out.println (i); //Распечатываем только что выделенный массив: System.out.println (" n'arr3 'ссылается на только что выделенный массив:"); для (Целое число i: arr3) System.out.println (i);}}