Java ArrayList представляет собой массив объектов с изменяемым размером, который позволяет нам добавлять, удалять, находить, сортировать и заменять элементы. ArrayList является частью фреймворка Collection и реализуется в интерфейсе List.
Мы можем инициализировать ArrayList несколькими способами в зависимости от требований. В этом уроке мы научимся инициализировать ArrayList на основе некоторых часто встречающихся вариантов использования.
// 1 - Пустой ArrayList с начальной емкостью 10ArrayList<Строка> список = новый ArrayList<>();//2 - Пустой ArrayList с начальной емкостью 64ArrayList<Строка> список = новый ArrayList<>( 64 );//3 - Инициализация и заполнение arraylist в одной строкеArrayList<String> names = new ArrayList<>( Arrays.asList(...) );ArrayList<String> names = new ArrayList<>( List.of(...) );//4 - Инициализация arraylist из существующей коллекцииArrayList<Строка> список = новый ArrayList<>(коллекция);//5 - Собрать элементы потокаСписок<Строка> список = stream.collect(Collectors.toCollection(ArrayList::new));
1. Инициализация ArrayList в одну строку
Создание и инициализация ArrayList в разных операторах иногда, кажется, генерирует ненужный шаблонный код. Мы можем оптимизировать создание ArrayList, используя следующие способы.
1.1. Используйте Arrays.asList() для инициализации ArrayList из массива
Чтобы инициализировать ArrayList в однострочном операторе, получите все элементы из массива с помощью метода Arrays.asList и передайте аргумент массива конструктору ArrayList.
ArrayList<String> names = new ArrayList<>( Arrays.asList("alex", "brian", "charles") );
1.2 Использование List.of() [Java 9 и выше]
Мы можем использовать статические методы фабрики List.of() для создания неизменяемых списков. Единственным недостатком является то, что операция add() не поддерживается в этих списках.
ArrayList<String> names = new ArrayList<>( List.of("alex", "brian", "charles") );
2. Инициализация ArrayList с помощью конструкторов
Использование конструктора ArrayList является традиционным подходом. Мы инициализируем пустой ArrayList(с начальной емкостью по умолчанию 10) с помощью конструктора без аргументов и добавляем элементы в список с помощью метода add().
ArrayList<String> names = new ArrayList<>();names.add("alex"); //Adding a single element at a timenames.add("brian");names.add("charles");
При желании конструктор ArrayList принимает необязательный параметр initialCapacity. Он должен быть положительным целым числом и обозначать начальную емкость списка. Начальная емкость представляет собой количество элементов, которые ArrayList может содержать без изменения размера своего внутреннего массива.
В следующем примере создается arraylist целых чисел с начальной емкостью 64. Это означает, что изменение размера списка произойдет при добавлении 65-го элемента. Для первых 64 элементов, избегая операции изменения размера, мы улучшаем производительность.
ArrayList<Integer> list = new ArrayList<>(64);
Мы можем добавлять элементы по одному или передавать другую коллекцию в addAll() элементы за один шаг. Это полезно при инициализации arraylist значениями или существующими объектами из другой коллекции любого типа.
HashMap<String, Integer> details = new HashMap<>();details.put("keanu", 23);details.put("max", 24);details.put("john", 53);names.addAll(details.keySet()); //Adding multiple elements in ArrayList
3. Инициализация ArrayList из потока Java 8
Поток представляет собой последовательность элементов, которая позволяет выполнять операции над коллекциями объектов в стиле функционального программирования. Мы также можем собирать объекты из потока в новый ArrayList.
Stream<String> stream = Stream.of("alex", "brian", "charles");ArrayList<String> stringList = stream//perform stream operations.collect(Collectors.toCollection(ArrayList::new));
Вот и все об инициализации ArrayList в Java. Пишите мне свои вопросы в комментариях.