Преобразование String[] в ArrayList<String> в Java
Быстрый ответ
Для преобразования массива строк String[]
в список ArrayList<String>
, следует использовать метод Arrays.asList()
, а затем создать новый объект ArrayList
. Пример кода:
String[] fruitArray = {"apple", "banana", "cherry"};
ArrayList<String> fruitList = new ArrayList<>(Arrays.asList(fruitArray));
Обратите внимание: Arrays.asList()
возвращает список фиксированного размера. Чтобы создать динамичную коллекцию ArrayList
, следует использовать этот список при создании нового экземпляра ArrayList
.
Разбор преобразования (с лёгким юмором)
Не беспокойтесь, здесь нет магии — только проверенный временем Java. Давайте разберем этот процесс пошагово:
Использование Arrays.asList
Класс Arrays
включает в себя удобный метод asList()
, позволяющий сформировать список на основе массива:
String[] fruitArray = {"apple", "banana", "cherry"};
List<String> fruitList = Arrays.asList(fruitArray);
// fruitList.add("mango"); // Будет ошибка! Попытка изменить список приведет к ошибке – это как попытка сделать фруктовый салат без миски.
Преобразование в ArrayList
Список, который возвращает asList()
, имеет фиксированный размер. Если вам нужна гибкость, подобная расстегивающимся джинсам, создайте новый ArrayList
:
ArrayList<String> flexibleFruitList = new ArrayList<>(Arrays.asList(fruitArray));
Ускоряем процесс с Collections.addAll()
Вместо ручного перебора элементов, как при поиске ключей в кармане, можно использовать Collections.addAll()
:
ArrayList<String> fruitList = new ArrayList<>();
Collections.addAll(fruitList, fruitArray);
// И вот готов наш фруктовый салат со свежими плодами!
Консервативный подход с циклом for
Иногда старые проверенные методы оказываются наилучшим выбором, включая случаи, когда вы хотите добавить кусочек лимона к каждому фрукту:
ArrayList<String> fruitList = new ArrayList<>(fruitArray.length); // Задаём начальную емкость, чтобы избежать излишней перестройки внутренней структуры
for(String fruit : fruitArray){
fruitList.add(fruit + " с лимоном");
}
Элегантное решение через Streams
Stream API из Java 8 позволяет упростить задачу, довольно элегантно добавив некоторую функциональность:
ArrayList<String> fruitList = Stream.of(fruitArray)
.collect(Collectors.toCollection(ArrayList::new));
// Попробуйте почувствовать разницу, будто фруктовый салат готовил не человек, а робот.
Особенности работы
Ограничения списка фиксированного размера
Не забывайте, что список, возвращаемый методом Arrays.asList()
, имеет фиксированный размер. Попытка его модифицировать приведет к выбросу исключения UnsupportedOperationException
.
Null-элементы в списке
Если в исходном массиве присутствуют null
-элементы, то они также окажутся в ArrayList
. Чтобы отфильтровать такие значения, используйте возможности Stream API:
ArrayList<String> fruitList = Stream.of(fruitArray)
.filter(Objects::nonNull)
.collect(Collectors.toCollection(ArrayList::new));
// Это прекрасный способ убрать непригодные элементы.
Синхронизированный ArrayList
ArrayList
, созданный с помощью описанных выше методов, не является потокобезопасным. Если в вашей программе имеется несколько потоков, которые обращаются к списку, следует рассмотреть использование Vector
или Collections.synchronizedList()
.
Визуализация
Представим, что ваш массив String[]
— это коробка, где находятся яблоки, бананы и вишни:
📦 Коробка (String[]): [ "apple", "banana", "cherry" ]
Если переложить эти фрукты в ArrayList
, это станет схоже с размещением их на фруктовой полке:
ArrayList<String> fruitRack = new ArrayList<>(Arrays.asList(box));
Теперь каждый фрукт находится в своей ячейке, и вы можете добавлять, удалять или перемешивать их как вам угодно.
Предыдущее: ➡️ 📦: [ "apple", "banana", "cherry" ]
Теперь: ➡️ 🍎🍌🍒: [ "apple", "banana", "cherry" ] // Теперь с ними можно обращаться по-разному, в отличие от коробки
Полезные материалы
- ArrayList (Java Platform SE 8) — Официальное руководство по работе с
ArrayList
в Java. - Arrays (Java Platform SE 8) — Стандартная функция Java, предназначенная для преобразования массивов в список.
- Effective Java, 3rd Edition (Книга) — Профессиональное руководство по лучшим практикам работы с Java.
- Java Generics and Collections (Книга) — Углубленный материал по особенностям и использованию системы типов в Java.
- java – Create ArrayList from array (StackOverflow) — Список решений и примеров, подготовленных сообществом.