Java ArrayList є частиною Java рамка колекції і це клас пакета java.util. Він надає нам динамічні масиви в Java. Хоча це може бути повільніше, ніж стандартні масиви, але може бути корисним у програмах, де потрібно багато маніпулювати масивом. Цей клас знаходиться в java.util пакет. Головний переваги ArrayList в Java полягає в тому, що якщо ми оголошуємо масив, то нам потрібно вказувати розмір, але в ArrayList не потрібно вказувати розмір ArrayList. Якщо ви хочете вказати розмір, ви можете це зробити.
Зміст
- Що таке ArrayList в Java?
- Приклад Java ArrayList
- Важливі функції ArrayList у Java
- Конструктори в ArrayList
- ArrayList у методах Java
- Операції, що виконуються в ArrayList
- Складність Java ArrayList
- Переваги Java ArrayList
- Недоліки Java ArrayList
- Висновок
- Поширені запитання щодо ArrayList
Що таке ArrayList у Java?
ArrayList — це клас Java, реалізований за допомогою інтерфейсу List. Java ArrayList, як випливає з назви, забезпечує функціональність динамічного масиву, де розмір не фіксований як масив. Крім того, як частина структури Collections, він має багато функцій, недоступних для масивів.
підрядок java

Ілюстрація:
Давайте перевіримо ArrayList із типом Integer Object, який зберігається в ньому разом із зображенням.

Приклад Java ArrayList
приклад 1: Наступна реалізація демонструє, як створити та використовувати ArrayList із зазначенням його розміру.
Java // Java program to demonstrate the // working of ArrayList import java.io.*; import java.util.*; class ArrayListExample { public static void main(String[] args) { // Size of the // ArrayList int n = 5; // Declaring the ArrayList with // initial size n ArrayList arr1 = новий ArrayList (n); // Оголошення ArrayList ArrayList arr2 = новий ArrayList (); // Друк ArrayList System.out.println('Array 1:' + arr1); System.out.println('Масив 2:' + arr2); // Додавання нових елементів у // кінець списку для (int i = 1; i<= n; i++) { arr1.add(i); arr2.add(i); } // Printing the ArrayList System.out.println('Array 1:' + arr1); System.out.println('Array 2:' + arr2); } }> Вихід
Array 1:[] Array 2:[] Array 1:[1, 2, 3, 4, 5] Array 2:[1, 2, 3, 4, 5]>
Пояснення вищевказаної програми:
ArrayList — це динамічний масив, і нам не потрібно вказувати розмір під час його створення, розмір масиву автоматично збільшується, коли ми динамічно додаємо та видаляємо елементи. Хоча фактична реалізація бібліотеки може бути складнішою, нижче наведено дуже основну ідею, яка пояснює роботу масиву, коли масив заповнюється та якщо ми намагаємося додати елемент:
- Створює пам'ять більшого розміру в пам'яті купи (наприклад, пам'ять подвійного розміру).
- Копіює поточні елементи пам'яті в нову пам'ять.
- Новий елемент додано зараз, оскільки тепер доступна більша пам’ять.
- Видаліть стару пам'ять.
Важливі функції ArrayList у Java
- ArrayList успадковує AbstractList клас і реалізує Інтерфейс списку .
- ArrayList ініціалізується розміром. Однак розмір автоматично збільшується, якщо колекція зростає, або зменшується, якщо об'єктів видаляються з колекції.
- Java ArrayList дозволяє нам випадково отримувати доступ до списку.
- ArrayList не можна використовувати для клас обгортки для таких випадків.
- ArrayList у Java можна розглядати як a вектор у C++ .
- ArrayList не синхронізовано. Його еквівалентний синхронізований клас у Java є Вектор .
Давайте розбиратися в Java ArrayList детально . Подивіться на зображення нижче:

На наведеній вище ілюстрації AbstractList , CopyOnWriteArrayList , і AbstractSequentialList це класи, які реалізують інтерфейс списку. У кожному із зазначених класів реалізована окрема функціональність. Вони є:
- AbstractList: Цей клас використовується для реалізації незмінюваного списку, для якого потрібно лише розширити цей клас AbstractList і реалізувати лише отримати() і розмір() методи.
- CopyOnWriteArrayList: Цей клас реалізує інтерфейс списку. Це розширена версія ArrayList у якому всі зміни (додавання, встановлення, видалення тощо) реалізуються шляхом створення нової копії списку.
- AbstractSequentialList: Цей клас реалізує Інтерфейс колекції і клас AbstractCollection. Цей клас використовується для реалізації незмінюваного списку, для якого потрібно лише розширити цей клас AbstractList і реалізувати лише отримати() і розмір() методи.
Конструктори в ArrayList в Java
Щоб створити ArrayList, нам потрібно створити об’єкт класу ArrayList. Клас ArrayList складається з різних конструктори які дозволяють можливе створення списку масивів. У цьому класі доступні такі конструктори:
1. ArrayList()
Цей конструктор використовується для створення списку порожніх масивів. Якщо ми хочемо створити порожній ArrayList з назвою обр , то його можна створити як:
ArrayList arr = new ArrayList();>
2. ArrayList (Колекція c)
Цей конструктор використовується для створення списку масиву, ініціалізованого елементами з колекції c. Припустимо, ми хочемо створити ArrayList arr, який містить елементи, присутні в колекції c, тоді його можна створити як:
ArrayList arr = new ArrayList(c);>
3. ArrayList (ємність int)
Цей конструктор використовується для створення списку масивів із заданою початковою ємністю. Припустімо, ми хочемо створити ArrayList з початковим розміром N, тоді його можна створити так:
ArrayList arr = new ArrayList(N);>
Методи Java ArrayList
| метод | опис |
|---|---|
| add(int index, Object element) | Цей метод використовується для вставки певного елемента в певну позицію в списку. |
| додати (об'єкт o) | Цей метод використовується для додавання певного елемента в кінець списку. |
| addAll(колекція C) | Цей метод використовується для додавання всіх елементів із певної колекції в кінець згаданого списку в такому порядку, щоб значення поверталися ітератором зазначеної колекції. |
| addAll(int index, Collection C) | Використовується для вставки всіх елементів, починаючи з указаної позиції, з певної колекції у згаданий список. |
| очистити() | Цей метод використовується для видалення всіх елементів з будь-якого списку. |
| клонувати() | Цей метод використовується для повернення поверхневої копії ArrayList у Java. |
| містить? (Об'єкт o) | Повертає true, якщо цей список містить вказаний елемент. |
| secureCapacity?(int minCapacity) | Збільшує ємність цього екземпляра ArrayList, якщо необхідно, щоб переконатися, що він може містити принаймні кількість елементів, визначену аргументом мінімальної ємності. |
| forEach? (Дії споживача) | Виконує задану дію для кожного елемента Iterable, доки всі елементи не будуть оброблені або дія не викличе виняткову ситуацію. |
| отримати? (індекс) | Повертає елемент у вказаній позиції в цьому списку. |
| indexOf(Об'єкт O) | Індекс першого входження певного елемента або повертається, або -1, якщо елемента немає в списку. |
| пусто?() | Повертає true, якщо цей список не містить елементів. |
| lastIndexOf(Об'єкт O) | Індекс останнього входження певного елемента повертається або -1, якщо елемента немає в списку. |
| listIterator?() | Повертає ітератор списку над елементами цього списку (у правильній послідовності). |
| listIterator?(індекс int) | Повертає ітератор списку над елементами в цьому списку (у належній послідовності), починаючи з указаної позиції в списку. |
| видалити? (індекс) | Видаляє елемент у вказаній позиції в цьому списку. |
| видалити? (Об'єкт o) | Видаляє перше входження зазначеного елемента з цього списку, якщо він присутній. |
| removeAll? (Колекція c) | Видаляє з цього списку всі його елементи, які містяться у вказаній колекції. |
| removeIf? (фільтр предикатів) | Видаляє всі елементи цієї колекції, які задовольняють заданий предикат. |
| removeRange?(int fromIndex, int toIndex) | Видаляє з цього списку всі елементи, індекс яких знаходиться між fromIndex, включно, та toIndex, винятково. |
| retainAll? (Колекція c) | Зберігає лише елементи цього списку, які містяться у вказаній колекції. |
| набір?(індекс цілого рядка, елемент E) | Замінює елемент у вказаній позиції в цьому списку вказаним елементом. |
| розмір?() | Повертає кількість елементів у цьому списку. |
| сплітератор?() | Створює пізній зв’язувальний і швидкий Spliterator над елементами в цьому списку. |
| subList?(int fromIndex, int toIndex) | Повертає перегляд частини цього списку між указаним fromIndex, включно, та toIndex, винятково. |
| toArray() | Цей метод використовується для повернення масиву, який містить усі елементи списку в правильному порядку. |
| toArray(Object[] O) | Він також використовується для повернення масиву, що містить усі елементи цього списку в правильному порядку, як і попередній метод. |
| trimToSize() | Цей метод використовується для скорочення ємності екземпляра ArrayList до поточного розміру списку. |
Примітка: Ви також можете створити загальний ArrayList:
// Створення загального цілочисельного ArrayList
ArrayList arrli = новий ArrayList();
Деякі ключові моменти ArrayList у Java
- ArrayList — це підкреслений масив даних зі змінним розміром або масив із можливістю збільшення.
- Дозволені дублікати ArrayList.
- Порядок вставки збережено.
- Допускаються різнорідні предмети.
- Можлива нульова вставка.
Давайте подивимося, як виконувати деякі основні операції над ArrayList, як зазначено в списку, які ми збираємося обговорити далі разом із реалізацією кожної операції.
- Додавання елемента до списку/Додати елемент
- Зміна елементів/ Елемент набору
- Видалення елементів/Видалити елемент
- Ітерація елементів
- отримати елементи
- додати елементи між двома числами
- Сортування елементів
- Розмір ArrayList
Операції, що виконуються в ArrayList
1. Додавання елементів
Щоб додати елемент до ArrayList, ми можемо використовувати метод add(). . Цей метод перевантажений для виконання кількох операцій на основі різних параметрів. Вони такі:
читати з файлу csv у java
- add(Object): Цей метод використовується для додавання елемента в кінець ArrayList.
- add(int index, Object): цей метод використовується для додавання елемента за певним індексом у ArrayList.
Нижче наведено реалізацію вищезазначеного підходу:
Java // Java Program to Add elements to An ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Array of string type ArrayListal = новий ArrayList(); // Додавання елементів до ArrayList // Спеціальні введення al.add('Geeks'); al.add('Виродки'); // Тут ми згадуємо індекс, // за яким його потрібно додати al.add(1, 'For'); // Друк усіх елементів у ArrayList System.out.println(al); } }> Вихід
[Geeks, For, Geeks]>
2. Зміна елементів
Після додавання елементів, якщо ми хочемо змінити елемент, це можна зробити за допомогою набір() метод. Оскільки ArrayList індексується, на елемент, який ми хочемо змінити, посилається індекс елемента. Таким чином, цей метод приймає індекс і оновлений елемент, який потрібно вставити в цей індекс.
Нижче наведено реалізацію вищезазначеного підходу:
Java // Java Program to Change elements in ArrayList // Importing all utility classes import java.util.*; // main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist object of string type ArrayListal = новий ArrayList(); // Додавання елементів до Arraylist // Власні елементи введення al.add('Geeks'); al.add('Виродки'); // Додавання із зазначенням індексу, який потрібно додати al.add(1, 'Geeks'); // Друк елементів Arraylist System.out.println('Initial ArrayList ' + al); // Установка елемента за 1-м індексом al.set(1, 'For'); // Друк оновленого Arraylist System.out.println('Updated ArrayList ' + al); } }> Вихід
Initial ArrayList [Geeks, Geeks, Geeks] Updated ArrayList [Geeks, For, Geeks]>
3. Видалення елементів
Щоб видалити елемент із ArrayList, ми можемо використати метод remove(). . Цей метод перевантажений для виконання кількох операцій на основі різних параметрів. Вони такі:
- видалити (об'єкт): Цей метод використовується для простого видалення об’єкта зі списку ArrayList. Якщо таких об’єктів декілька, видаляється перший випадок об’єкта.
- видалити (індекс індексу): Оскільки ArrayList індексується, цей метод приймає ціле число, яке просто видаляє елемент, присутній у цьому конкретному індексі в ArrayList. Після видалення елемента всі елементи переміщуються вліво, щоб заповнити простір, а індекси об’єктів оновлюються.
приклад:
Java // Java program to Remove Elements in ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an object of arraylist class ArrayListal = новий ArrayList(); // Додавання елементів до ArrayList // Спеціальне додавання al.add('Geeks'); al.add('Виродки'); // Додавання елемента за певним індексом al.add(1, 'For'); // Друк усіх елементів ArrayList System.out.println('Initial ArrayList ' + al); // Видалення елемента зверху ArrayList al.remove(1); // Друк оновлених елементів Arraylist System.out.println('Після видалення індексу ' + al); // Видалення цього елемента слова в ArrayList al.remove('Geeks'); // Зараз друкується оновлений ArrayList System.out.println('Після видалення об'єкта ' + al); } }> Вихід
Initial ArrayList [Geeks, For, Geeks] After the Index Removal [Geeks, Geeks] After the Object Removal [Geeks]>
4. Ітерація ArrayList
Існує кілька способів перебору ArrayList. Найвідоміші способи - за допомогою основного для циклу у поєднанні з a метод get(). щоб отримати елемент із певним індексом і передовий для петлі .
приклад
Java // Java program to Iterate the elements // in an ArrayList // Importing all utility classes import java.util.*; // Main class class GFG { // Main driver method public static void main(String args[]) { // Creating an Arraylist of string type ArrayListal = новий ArrayList(); // Додавання елементів до ArrayList // за допомогою стандартного методу add() al.add('Geeks'); al.add('Виродки'); al.add(1, 'Для'); // Використання методу Get і // циклу for for (int i = 0; i< al.size(); i++) { System.out.print(al.get(i) + ' '); } System.out.println(); // Using the for each loop for (String str : al) System.out.print(str + ' '); } }> Вихід
Geeks For Geeks Geeks For Geeks>
5. Отримати елементи
Java // Java program to get the elemens in ArrayList import java.io.*; import java.util.*; class GFG { public static void main (String[] args) { ArrayList список = новий ArrayList(); // додати число list.add(9); list.add(5); list.add(6); System.out.println(список); // отримати метод Integer n= list.get(1); System.out.println('за індексом 1 число:'+n); } }> Вихід
[9, 5, 6] at indext 1 number is:5>
6. Додайте елементи між двома числами
Java // Java program to add the elements // between two numbers in ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList список = новий ArrayList(); list.add(1); list.add(2); list.add(4); System.out.println(список); // вставити відсутній елемент 3 list.add(2, 3); System.out.println(список); } }> Вихід
[1, 2, 4] [1, 2, 3, 4]>
7. Сортування ArrayList
Java // Java Program for ArrayList Sorting import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList список = новий ArrayList(); list.add(2); list.add(4); list.add(3); list.add(1); System.out.println('Перед сортуванням списку:'); System.out.println(список); Collections.sort(список); System.out.println('після списку сортування:'); System.out.println(список); } }> Вихід
Before sorting list: [2, 4, 3, 1] after sorting list: [1, 2, 3, 4]>
8. Розмір елементів
Java // Java program to find the size // of elements of an ArrayList import java.io.*; import java.util.*; class GFG { public static void main(String[] args) { ArrayList список = новий ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); int b = list.size(); System.out.println('Розмір:' + b); } }> Вихід
The size is :4>
Складність Java ArrayList
Операція | Часова складність | Космічна складність |
|---|---|---|
Вставлення елемента в ArrayList | О(1) | O(N) |
Видалення елемента зі списку ArrayList | O(N) | О(1) |
Обхід елементів у ArrayList | O(N) | O(N) |
Заміна елементів у ArrayList | О(1) | О(1) найгарніша посмішка в світі |
ArrayList у Java — це клас у рамках Java Collections, який реалізує інтерфейс List. Ось переваги та недоліки використання ArrayList у Java.
Переваги Java ArrayList
- Динамічний розмір: ArrayList може динамічно збільшуватися та зменшуватися в розмірі, що полегшує додавання або видалення елементів за потреби.
- Простий у використанні: ArrayList простий у використанні, що робить його популярним вибором для багатьох розробників Java.
- Швидкий доступ: ArrayList забезпечує швидкий доступ до елементів, оскільки він реалізований як масив під капотом.
- Упорядкована колекція: ArrayList зберігає порядок елементів, дозволяючи вам отримувати доступ до елементів у порядку їх додавання.
- Підтримує нульові значення: ArrayList може зберігати нульові значення, що робить його корисним у випадках, коли потрібно відобразити відсутність значення.
Недоліки Java ArrayList
- Повільніше, ніж масиви: ArrayList повільніше, ніж масиви для певних операцій, таких як вставка елементів у середину списку.
- Збільшене використання пам’яті: ArrayList потребує більше пам’яті, ніж масиви, оскільки він має підтримувати свій динамічний розмір і керувати зміною розміру.
- Небезпечний для потоків: ArrayList не безпечний для потоків, а це означає, що кілька потоків можуть отримувати доступ до списку та змінювати його одночасно, що призводить до потенційних умов змагання та пошкодження даних.
- Зниження продуктивності: продуктивність ArrayList може погіршуватися зі збільшенням кількості елементів у списку, особливо для таких операцій, як пошук елементів або вставка елементів у середину списку.
Висновок
Пункти, які слід пам’ятати з цієї статті, згадуються нижче:
- ArrayList є частиною структури Collections. Він успадковує клас AbstractList і реалізує інтерфейс List.
- ArrayList — це реалізація динамічного масиву.
- ArrayList можна ініціалізувати за допомогою різних типів конструкторів, як-от без параметрів, передача колекції як параметра та передача цілого числа як параметра.
- У ArrayList можна виконувати наступні операції: додавання, видалення, ітерація та сортування.
Поширені запитання щодо ArrayList
Що таке ArrayList у Java?
ArrayList у Java є частиною структури колекцій. Він використовується для зберігання елементів, а розмір можна змінювати.
Як дані зберігаються в ArrayList?
ArrayList може зберігати дані, доки розмір ArrayList не заповниться, після цього розмір ArrayList подвоюється, якщо ми хочемо зберегти ще якісь елементи.
Чи допускає ArrayList дублікати?
Так, ArrayList дозволяє зберігати повторювані значення.