Встречается ситуация, когда необходимо преобразовать ArrayList, содержащий Integer объекты, в примитивный int массив. Например, есть задача перевести данные из списка в массив для использования в определенной функции или методе, которые работают с примитивными типами.
List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); int[] array = (int[])list.toArray();
Попытка выполнить этот код вызовет ошибку компиляции. Это происходит потому, что метод toArray()
возвращает массив объектов (Object[]
), а не примитивных типов. Поэтому приведение к примитивному типу вызывает ошибку.
Вместо этого можно использовать потоки (streams) из Java 8. С их помощью можно перевести данные из списка в массив примитивных типов.
List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); int[] array = list.stream().mapToInt(i->i).toArray();
В этом случае поток элементов списка (stream
) преобразуется в поток примитивных типов (mapToInt(i->i)
), который затем переводится в массив (toArray()
).
Также есть способ выполнить это преобразование с помощью цикла:
List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); list.add(3); int[] array = new int[list.size()]; for (int i = 0; i < list.size(); i++) { array[i] = list.get(i); }
В этом случае создается массив примитивных типов, размер которого равен размеру списка. Затем в цикле каждый элемент списка копируется в массив.
Таким образом, преобразование ArrayList с Integer в примитивный int массив в Java возможно и может быть выполнено несколькими способами.
Добавить комментарий