Массив — это набор элементов, которые могут иметь как примитивные типы данных, так и объекты. Массивы в Java носят статический характер. ArrayLists, с другой стороны, могут хранить элементы только как объекты. ArrayLists в Java, в отличие от массивов, имеют динамический характер. ArrayList — это класс коллекции, представленный в пакете java.util , который реализует интерфейс java.util.List .
Массив можно преобразовать в ArrayList с помощью следующих методов:
-
Использование метода ArrayList.add () для ручного добавления элементов массива в ArrayList . Этот метод включает создание нового ArrayList и добавление всех элементов данного массива во вновь созданный ArrayList с помощью метода add ().
Параметры: эта функция принимает 2 обязательных параметра:
- index — Индекс, в который должен быть вставлен указанный элемент.
- element — элемент для вставки.
Возвращает: метод не возвращает никакого значения
Исключение (я): метод генерирует исключение IndexOutOfBoundsException, если индекс находится вне диапазона.
// Java-программа для иллюстрации преобразования
// из массива в ArrayList
public static void func1( int arr[])
// Использование метода add () для добавления элементов в array_list
for ( int i = 0 ; i
array_list.add( new Integer(arr[i]));
public static void main(String[] args)
Использование метода Arrays.asList () класса java.utils.Arrays: этот метод преобразует массив в список, а затем передает список в качестве параметра для инициализации нового ArrayList со значениями списка.
Параметры: Метод принимает обязательный параметр T [] a, где a — массив, на который будет опираться список, а T — тип массива.
Returns: метод возвращает представление списка указанного массива.
// Java-программа для иллюстрации преобразования
// из массива в ArrayList
public static void func2(Integer arr[])
// Использование метода Arrays.asList ()
new ArrayList (Arrays.asList(arr));
public static void main(String[] args)
// Вместо этого используются целочисленные объекты
// примитивов для преобразования в список
Использование метода Collections.addAll () класса java.utils.Collections: этот метод принимает ArrayList, в который значения массива должны быть вставлены в качестве первого параметра; и Массив, значения которого должны использоваться в качестве второго параметра. Затем он копирует значения массива в ArrayList.
Параметры: Метод принимает 2 обязательных параметра:
- c — это коллекция, в которую должны быть вставлены элементы.
- a — Массив для вставки в c, типа T
Возвращает: метод возвращает значение «истина», если коллекция изменилась в результате вызова, в противном случае «ложь».
Исключение (я): метод бросает
- UnsupportedOperationException .
- NullPointerException, если указанная коллекция пуста.
- IllegalArgumentException, если какой-либо аспект значения в массиве препятствует его добавлению в c.
// Java-программа для иллюстрации преобразования
// из массива в ArrayList
Иногда нам нужно преобразовать массив в ArrayList на Java, но как сделать это правильно и эффективно? Сегодня мы будем рассматривать два способа конвертации Array в ArrayList.
Arrays.asList(T… a) — простой и быстрый способ преобразовать массив в ArrayList в Java, но этот метод возвращает исходный массив в виде ArrayList. Результирующий ArrayList будет фиксированного размера и любая попытка изменить в нем что-то приведет к UnsupportedOperationException во время выполнения. Кроме того, любое изменение в массиве также изменит элементы в ArrayList!
Collections.addAll(ArrayList strList, T[] strArr) — лучший способ преобразовать Array в ArrayList, потому что массив данных копируется в список в виде самостоятельного объекта. А это значит, что исходный массив и результирующий ArrayList будут независимы друг от друга.
Теперь давайте посмотрим эти методы в действии:
Есть ArrayList который автоматически заполняется данными(ссылками). Хочу преобразовать его в простой String[] командой:
Но Eсlipse ругается на ; причем вне зависимости от того как я пытаюсь преобразовать, в этом случае тоже будет ошибка:
В этом варианте нет ошибки:
Но если попытаться вывести на консоль, то вместо данных я получаю вот такую ошибку:
А вот такой вариант крашит программу:
Такой нормально покажет ссылку:
Соответственно вопрос в чем может быть ошибка и как лучше преобразовать ArrayList в обычный массив.