Клас ArrayList. Методи, що змінюють дані в масиві
Зміст
- 1. Метод add(). Додати елемент в кінець масиву
- 2. Метод addAll(). Додати колекцію до масиву
- 3. Метод clear(). Очистити масив
- 4. Метод remove(). Видалити елемент в заданій позиції
- 5. Метод removeAll(). Видалити групу елементів з колекції
- 6. Метод removeIf(). Змінити колекцію на основі предикату
- 7. Метод replaceAll(). Виконати обчислення над кожним елементом масиву
- 8. Метод set(). Встановити нове значення в елементі
- 9. Метод sort(). Посортувати елементи масиву
- Споріднені теми
Пошук на інших ресурсах:
1. Метод add(). Додати елемент в кінець масиву
Метод add() додає елемент до масиву. Метод має дві перевантажені реалізації
add(E obj) add(int index, E obj)
тут
- E – тип елементів масиву;
- obj – об’єкт (елемент), що додається до масиву;
- index – позиція, в яку потрібно вставити елемент obj у масив.
Приклад. У прикладі формується масив квадратів чисел від 1 до 10. Для додавання числа в кінець масиву використовується метод add().
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод addAll() - додати елемент в кінець масиву // 1. Створити масив з чисел типу Integer ArrayList<Integer> AI = new ArrayList(); // 2. Додати у масив квадрати чисел від 1 до 10 for (int i=1; i<=10; i++) AI.add(i*i); // 3. Вивести масив System.out.println(AI); // 4. Додати число 555 на початок масиву в позицію 0 AI.add(0, 555); System.out.println(AI); } }
Результат виконання програми
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100] [555, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
⇑
2. Метод addAll(). Додати колекцію до масиву
Метод addAll() призначений для додавання вже існуючої колекції до масиву. Колекцією може бути колекція, черга, інший масив тощо. Метод має дві перевантажені реалізації
addAll(Collection<? extends E>) addAll(int index, Collection<? extends E>)
тут
- E – тип елементів масиву (колекції);
- index – позиція, з якої відбувається вставка.
Приклад. Демонструється використання методу addAll() для масиву цілих чисел.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод addAll() - додати колекцію до масиву // 1. Створити масив з 5 чисел типу Float ArrayList<Float> AI = new ArrayList(); AI.add(1.0f); AI.add(2.0f); AI.add(3.0f); AI.add(4.0f); AI.add(5.0f); System.out.println("AI = " + AI); // 2. Створити другий масив з 3 чисел типу Float ArrayList<Float> AI2 = new ArrayList(); for (int i=1; i<=3; i++) AI2.add(i*15f); System.out.println("AI2 = " + AI2); // 3. Додати масив AI2 в кінець масиву AI AI.addAll(AI2); System.out.println("AI + AI2 = " + AI); // 4. Записати масив AI2 в масив AI починаючи з позиції 2 AI.addAll(2, AI2); System.out.println("AI[2] + AI2 = " + AI); } }
Результат виконання програми
AI = [1.0, 2.0, 3.0, 4.0, 5.0] AI2 = [15.0, 30.0, 45.0] AI + AI2 = [1.0, 2.0, 3.0, 4.0, 5.0, 15.0, 30.0, 45.0] AI[2] + AI2 = [1.0, 2.0, 15.0, 30.0, 45.0, 3.0, 4.0, 5.0, 15.0, 30.0, 45.0]
⇑
3. Метод clear(). Очистити масив
Метод clear() призначений для очищення масиву. Згідно з документацією загальна форма оголошення методу наступна
public void clear();
Приклад. У прикладі створюється колекція з символів-розділювачів.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод clear() - Очистити колекцію // 1. Створити колекцію з розділових символів у реченні ArrayList<Character> AL = new ArrayList(); AL.add(';'); AL.add(':'); AL.add(','); AL.add('.'); AL.add('!'); AL.add('?'); AL.add(' '); // 2. Вивести колекцію System.out.println("AL => " + AL); // 3. Очистити колекцію AL.clear(); // 4. Вивести колекцію після очищення System.out.println("AL.clear() => " + AL); } }
Результат виконання програми
AL => [;, :, ,, ., !, ?, ] AL.clear() => []
⇑
4. Метод remove(). Видалити елемент в заданій позиції
З допомогою методу remove() можна видалити елемент у заданій позиції. Згідно з документацією, оголошення методу наступне
public E remove(int index);
тут
- E – тип елементів масиву (колекції);
- index – номер позиції, яку потрібно видалити. Позиція нумерується з 0.
Метод повертає значення елементу, що видаляється з масиву (колекції).
Якщо значення index вказано за межами допустимого діапазону
(index < 0 || index >= size())
то буде згенероване виключення IndexOutOfBoundsException.
Приклад.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод remove() - видалити окремий елемент з масиву // 1. Створити колекцію дійсних чисел ArrayList<Float> AL = new ArrayList<Float>(); AL.add(2.8f); AL.add(3.5f); AL.add(7.2f); AL.add(9.4f); AL.add(5.2f); // 2. Вивести колекцію System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Видалити елемент в позиції 2, який має значення 7.2 AL.remove(2); // 4. Вивести змінену колекцію System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); } }
Результат виконання програми
AL => 2.8 3.5 7.2 9.4 5.2 AL => 2.8 3.5 9.4 5.2
⇑
5. Метод removeAll(). Видалити групу елементів з колекції
З допомогою методу removeAll() можна видалити декілька елементів, які представлені у вигляді колекції. Згідно з документацією оголошення методу наступне:
public boolean removeAll(Collection<?> c);
тут
- c – колекція (масив) елементів, які потрібно видалити з поточної колекції.
Метод повертає true, якщо поточний масив змінився у результаті виклику.
Приклад.
У прикладі формуються дві цілочисельні колекції:
- AL – вихідна колекція чисел;
- AL2 – колекція чисел, які потрібно видалити з колекції AL.
З допомогою методу removeAll() відбувається видалення з колекції AL усіх елементів, що входять у колекцію AL2.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод removeAll() - видалити групу елементів з масиву // 1. Створити колекцію цілих чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); AL.add(4); AL.add(5); AL.add(6); AL.add(1); // 2. Вивести вихідну колекцію System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Створити колекцію чисел, які потрібно видалити ArrayList<Integer> AL2 = new ArrayList<Integer>(); // видалити усі числа 2, 4, 7 AL2.add(2); AL2.add(4); AL2.add(7); // 4. Викликати метод removeAll() AL.removeAll(AL2); // 4. Вивести змінену колекцію System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); } }
Результат виконання програми
AL => 2 3 2 4 7 3 4 5 6 1 AL => 3 3 5 6 1
⇑
6. Метод removeIf(). Змінити колекцію на основі предикату
З допомогою методу removeIf() можна видалити елементи з колекції згідно з умовою. У результаті формується нова колекція (масив). Загальна форма оголошення методу наступна
public boolean removeIf(Predicate<? super E> filter);
тут
- filter – посилання (предикат), що визначає умову фільтрування. Умова задається лямбда-виразом.
Метод повертає true, якщо хоча б один елемент був видалений.
Приклад. У прикладі демонструється виконання методу removeIf(). Демонструються наступні операції:
- створюється колекція цілих чисел;
- формується предикат, в якому визначаються числа, які більше 4;
- викликається метод removeIf() з допомогою якого формується новий масив чисел згідно з предикатом.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод removeIf() - змінити масив на основі умови // 1. Створити колекцію цілих чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); AL.add(4); AL.add(5); AL.add(6); AL.add(1); // 2. Вивести вихідну колекцію System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Оголосити посилання на інтерфейс Predicate<Integer> Predicate<Integer> ref; // 4. Сформувати умову для посилання ref на основі лямбда-виразу: // взяти всі числа, що більше 4 ref = (value) -> value > 4; // 5. Викликати метод removeIf() та передати йому посилання ref з умовою AL.removeIf(ref); // видалити усі числа, що більше 4 // 6. Вивести змінений масив AL System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат виконання програми
AL => 2 3 2 4 7 3 4 5 6 1 AL => 2 3 2 4 3 4 1
⇑
7. Метод replaceAll(). Виконати обчислення над кожним елементом масиву
З допомогою методу replaceAll() можна застосувати деяку операцію до кожного елементу масиву. Такою операцією може бути, наприклад добуток кожного елементу на 2. Згідно з документацією загальна форма оголошення методу наступна:
public void replaceAll(UnaryOperator<E> operator);
тут
- operator – лямбда-вираз, що визначає операцію над кожним елементом послідовності. Лямбда-вираз формується з допомогою функціонального інтерфейсу UnaryOperator<T>.
Приклад. У прикладі створюється масив цілих чисел. Потім кожен елемент масиву множиться на 3 з допомогою методу replaceAll(). Для виконання обчислення формується посилання на відповідний лямбда-вираз.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод replaceAll() - змінити значення елементів вихідного масиву // 1. Створити колекцію цілих чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(2); AL.add(3); AL.add(2); AL.add(4); AL.add(7); AL.add(3); // 2. Вивести колекцію з допомогою ітератора Iterator<Integer> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Сформувати лямбда-вираз, що множить елемент на 3 UnaryOperator<Integer> op = (num) -> num*3; // 4. Викликати метод replaceAll() та застосувати до нього оператор op AL.replaceAll(op); // 5. Вивести змінену колекцію (масив) цілих чисел it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) { System.out.print(it.next() + " "); } } }
Результат виконання програми
AL => 2 3 2 4 7 3 AL => 6 9 6 12 21 9
⇑
8. Метод set(). Встановити нове значення в елементі
Метод set() встановлює нове значення в заданій позиції масиву. Іншими словами, старе значення масиву в заданій позиції замінюється новим. Оголошення методу має вигляд
public E set(int index, E element);
тут
- index – позиція вставки (нумерується з 0);
- element – нове значення, яке потрібно встановити в позиції index.
Метод повертає попереднє значення, яке було встановлене в заданій позиції.
Якщо значення index виходить за межі допустимого діапазону, тобто
(index < 0 || index >= size())
то буде згенероване виключення IndexOutOfBoundsException.
Приклад.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод set() - встановити значення в окремому елементі масиву // 1. Створити колекцію рядків ArrayList<String> AL = new ArrayList<String>(); AL.add("a"); AL.add("b"); AL.add("c"); // 2. Вивести вихідний масив з допомогою ітератора Iterator<String> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Встановити нове значення в елементі з індексом 1 String oldValue; oldValue = AL.set(1, "bbb"); // 4. Вивести попередній рядок System.out.println("oldValue = " + oldValue); // 5. Вивести змінений масив System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат виконання програми
AL => a b c oldValue = b AL => a bbb c
⇑
9. Метод sort(). Посортувати елементи масиву
З допомогою методу sort() можна посортувати елементи масиву. Загальна форма оголошення методу наступна
public void sort(Comparator<? super E> c);
тут
- c – компаратор (умова), який реалізує принцип порівняння будь-яких двох елементів масиву. Компаратор використовується у випадку, коли розробляється власний клас, об’єкти якого можуть бути посортовані за деяким критерієм. У цьому випадку клас повинен реалізувати інтерфейс Comparator. У цьому інтерфейсі визначено метод compare(), який порівнює два елементи. Саме цей метод потрібно перевизначити і реалізувати у цьому класі та задати власний механізм порівняння.
Для стандартних типів-оболонок (Integer, Double, String і т.д.) реалізовано внутрішній компаратор, який сортує елементи в природному порядку (від меншого до більшого або за алфавітом). Для використання стандартного способу сортування потрібно викликати метод sort() з аргументом null
AL.sort(null);
тут AL – масив елементів, що сортується.
Приклад.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод sort() - сортування у природному порядку // 1. Створити масив рядків ArrayList<String> AL = new ArrayList<String>(); AL.add("jklm"); AL.add("abcd"); AL.add("elsd"); AL.add("lkls"); AL.add("azsd"); // 2. Вивести вихідний масив Iterator<String> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Посортувати елементи масиву, метод sort() AL.sort(null); // 4. Вивести посортований масив System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат виконання програми
AL => jklm abcd elsd lkls azsd AL => abcd azsd elsd jklm lkls
⇑
Споріднені теми
- Клас ArrayList. Динамічний масив. Загальні відомості. Створення масиву
- Методи, що визначають інформацію про елементи масиву. Методи get(), contains(), containsAll(), indexOf(), lastIndexOf(), iterator(), listIterator()
- Методи, що визначають загальні характеристики масиву. Методи ensureCapacity(), isEmpty(), size(), trimToSize()
- Методи, що перетворюють масив у цілому. Методи clone(), sublist(), toArray(), retainAll()
⇑