Преобразование коллекций в массивы — это общая задача, с которой сталкиваются разработчики на Java. Например, есть задача преобразовать ArrayList<String> в массив String[].
Предположим, есть следующий ArrayList<String>:
ArrayList<String> list = new ArrayList<String>(); list.add("one"); list.add("two"); list.add("three");
Задача — преобразовать его в массив String[]. Первый подход, который может прийти в голову — это использовать метод toArray()
:
String[] array = (String[]) list.toArray();
Однако, этот код вызовет ClassCastException
на этапе выполнения, так как метод toArray()
возвращает массив Object[]
, а не String[]
.
Для преобразования ArrayList<String> в String[] правильным путем будет использование перегруженной версии метода toArray(T[] a)
. Этот метод возвращает массив, содержащий все элементы списка в правильной последовательности; типом возвращаемого массива будет тип массива, переданного в метод. Если список вмещает в переданный массив, он возвращается. В противном случае, новый массив выделяется с типом и размером переданного массива.
Вот как правильно преобразовать ArrayList<String> в String[]:
String[] array = list.toArray(new String[0]);
В этом примере создается новый массив String[] с размером 0. Если список больше этого размера, то метод toArray()
сам выделит память под новый массив нужного размера. Если же размер списка меньше или равен размеру переданного массива, то будет использован переданный массив. Значения списка будут помещены в этот массив и он будет возвращен.
Таким образом, для преобразования ArrayList<String> в String[] нужно использовать метод toArray(T[] a)
, передав в него массив нужного типа.
Добавить комментарий