1. Клас ArrayList
Сьогодні ми вивчимо клас ArrayList
. Це перший клас із так званих колекцій. Колекції в Java — настільки ємка й корисна річ, що їм присвячено цілий квест на JavaRush.
Щоб повністю зрозуміти, як влаштовано колекції, і опанувати всі особливості роботи з ними, потрібно спочатку вивчити ООП, інтерфейси, успадкування, ази багатонитковості й багато іншого.
Тому сьогодні ми просто ознайомимося з найпростішої колекцією, натомість на досить глибокому рівні, щоб ви розуміли, як нею користуватися та як вона працює. Отже, зустрічайте: колекція ArrayList
.
Передісторія
Почну з невеличкої передісторії. Програмістам дуже не подобалася одна властивість масиву — його розмір не можна змінювати. Що робити, якщо потрібно зберегти в масиві ще три елементи, а вільне місце лише одне?
Єдиним розв'язанням проблеми браку місця в масиві було створення масиву дуже великого розміру, щоб усі елементи туди точно вмістилися. Проте це часто спричиняло нераціональні витрати пам'яті. Якщо зазвичай у масиві зберігалося два-три елементи, але існувала хоча б мізерна ймовірність, що їх там буде 100, доводилося створювати масив на 100 елементів.
І що ж придумали програмісти? Вони написали клас ArrayList
(масив-список), який виконував ту саму роботу, що й Array
(масив), але міг змінювати свій розмір.
Клас ArrayList
Сама назва ArrayList
походить від двох слів: Array + List. Array
— це масив, а List
— список.
Усередині кожного об'єкта типу ArrayList
зберігається звичайний масив елементів. Коли ви зчитуєте елементи з ArrayList
, він зчитує їх зі свого внутрішнього масиву. Коли записуєте — записує їх у внутрішній масив.
У класу ArrayList відсутні всі недоліки, притаманні масивам. Він уміє:
- Зберігати елементи певного типу
- Динамічно змінювати розмір списку
- Додавати елементи в кінець списку
- Вставляти елементи в початок і в середину списку
- Видаляти елементи з будь-якого місця списку
Докладніше — нижче:
2. Створення об’єкта ArrayList
Щоб створити об'єкт класу ArrayList
, потрібно написати отакий код:
ArrayList<Тип> ім'я = new ArrayList<Тип>();
де ArrayList
— це тип/клас колекції, Тип
— це тип елементів, які зберігаються в колекції ArrayList
, а ім'я
— це ім'я змінної типу ArrayList<Тип>
.
Тип змінної ім'я
складений — він складається аж із двох типів: спочатку вказують тип колекції, а в трикутних дужках — тип елементів, які ця колекція зберігає.
Приклади:
Код | Опис |
---|---|
|
Список цілих чисел |
|
Список рядків |
|
Список дійсних чисел |
Колекції, на відміну від масивів, не можуть зберігати примітивні типи: тільки типи-класи. Тому якщо вам потрібна колекція зі значеннями типу int
, використовуйте замість нього клас-обгортку — Integer
.
3. Операції з ArrayList
Спочатку довжина щойно створеного списку дорівнює нулю: він містить 0 елементів. Якщо до списку додати один елемент, довжина списку збільшиться на 1. Якщо видалити доданий елемент, довжина знову зменшиться до нуля.
Докладніше дізнатися про методи класу ArrayList
можна з таблиці:
Методи | Опис |
---|---|
|
Додає до списку переданий елемент |
|
Додає елемент на певне місце у списку |
|
Повертає елемент із номером index |
|
Змінює значення елемента з номером index на value |
|
Видаляє елемент із номером index . Повертає видалений елемент. |
|
Видаляє елемент: потрібно передати сам елемент у список. Якщо таких елементів декілька, буде видалено перший з них |
|
Очищає список — видаляє всі елементи зі списку |
|
Перевіряє, чи міститься в списку елемент value |
|
Перевіряє, порожній список чи ні (чи дорівнює довжина списку нулю) |
|
Повертає розмір списку — кількість елементів списку |
|
Повертає масив, який містить ті самі елементи, що й список. Масив потрібно передати в метод |
Ці методи дають змогу виконувати зі списком практично всі можливі операції: міняти елементи місцями, додавати елементи, видаляти елементи. Можна навіть очистити список за допомогою однієї команди або перетворити список на масив.
4. Порівняння ArrayList
і Array
Гадаю, без порівняння ArrayList
і масиву нам не обійтися.
Фактично з масивом можна виконувати лише 4 дії:
- Створення масиву
- Отримання елемента за номером
- Встановлення елемента в масиві за номером
- Отримання довжини масиву
Ось аналоги операцій у масиві та в ArrayList
:
Масив | ArrayList |
---|---|
|
|
|
|
|
|
|
|
Порівняймо роботу ArrayList
і роботу з масивом. Для прикладу розв'яжімо таку задачу: «Ввести 10 рядків з клавіатури й вивести їх на екран у зворотному порядку».
Використовуємо Array (масив) | Використовуємо ArrayList |
---|---|
|
|
Загалом можна провести точну аналогію, причому в масиві все виглядає нібито коротше й зрозуміліше. Але й в ArrayList
не надто складно: отримати елемент — метод get()
, змінити елемент — метод set()
, отримати довжину списку — метод size()
.
Тож навіщо програмісти використовують клас ArrayList
?
Звичайно ж, основна причина в інших методах, яких у масиву немає й не буде:
- Додавання елемента до списку
- Додавання елемента в середину списку
- Пошук елемента в списку
- Видалення елемента зі списку
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ