Клас ArrayList. Методи що перетворюють масив в цілому
Зміст
- 1. Метод clone(). Отримати копію з масиву
- 2. Метод subList(). Отримати фрагмент масиву на основі заданого масиву
- 3. Метод toArray(). Конвертувати масив ArrayList у масив типу Object[]
- 4. Метод retainAll(). Сформувати новий масив, що містить елементи заданої колекції
- Споріднені теми
Пошук на інших ресурсах:
1. Метод clone(). Отримати копію з масиву
Метод clone() виконує копію з масиву. Копія розміщується в іншій ділянці пам’яті. Згідно з документацією загальна форма методу наступна
public Object clone();
Приклад. У прикладі формується масив чисел. Потім з допомогою методу clone() робиться копія масиву. У копії змінюється один елемент. Під кінець виводяться обидва масиви. Після результату видно, що масиви мають різні значення. Це означає, що вони розміщуються в різних ділянках пам’яті. Зміна значень в одному масиві не впливає на інший масив.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод clone() - Зробити копію з колекції // 1. Створити колекцію з чисел ArrayList<Integer> AL = new ArrayList(); AL.add(1); AL.add(2); AL.add(3); AL.add(4); AL.add(5); System.out.println("AL => " + AL); // 2. Зробити копію з колекції ArrayList<Integer> AL2 = (ArrayList<Integer>) AL.clone(); // 3. Вивести копію AL2 System.out.println("AL2 => " + AL2); // 4. Змінити копію AL2 AL2.set(2, 100); // Змінити другий елемент // 5. Вивести оригінал AL та копію AL2 System.out.println("After change AL2: "); System.out.println("AL = " + AL); System.out.println("AL2 = " + AL2); } }
Результат виконання програми
AL => [1, 2, 3, 4, 5] AL2 => [1, 2, 3, 4, 5] After change AL2: AL = [1, 2, 3, 4, 5] AL2 = [1, 2, 100, 4, 5]
⇑
2. Метод subList(). Отримати фрагмент масиву на основі заданого масиву
Метод subList() повертає підмасив на основі заданого масиву. Загальна форма оголошення методу наступна
public List<E> subList(int fromIndex, int toIndex);
тут
- fromIndex, toIndex – діапазон значень у вихідному масиві на основі якого формується результуючий масив.
Для методу визначено наступні особливості:
- значення fromIndex розглядається як включене. Значення toIndex розглядається як виключене. Наприклад, якщо потрібно отримати перші 3 елементи масиву, то fromIndex = 0, toIndex = 3;
- якщо fromIndex та toIndex рівні між собою, то повертається пустий масив;
- список який повертається, є складовою частиною вихідного списку. Це означає, що всі зміни у результуючому списку будуть змінювати вихідний список. І, навпаки, всі зміни у вихідному списку будуть впливати на результуючий список;
- для результуючого списку визначено всі основні операції над списком, які будуть впливати на вихідний список.
При неправильному використанні методу можуть бути згенеровані наступні виключення:
- IndexOutOfBoundsException – випадок, коли значення fromIndex<0 або toIndex>size();
- IllegalArgumentException – випадок, коли fromIndex>toIndex.
Приклад.
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод subList() - отримати підмасив на основі заданого масиву // 1. Створити масив чисел ArrayList<Integer> AL = new ArrayList<Integer>(); AL.add(10); AL.add(20); AL.add(30); AL.add(40); AL.add(50); AL.add(60); AL.add(70); // 2. Вивести вихідний масив AL System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Отримати підмасив List<Integer> AL2 = (List<Integer>) AL.subList(1, 4); // AL2 = { 20, 30, 40 } // 4. Вивести підмасив System.out.print("AL2 => "); for (int i=0; i<AL2.size(); i++) System.out.print(AL2.get(i) + " "); System.out.println(); // 5. Змінити елементи з індексами 2, 3 у вихідному масиві, // буде змінюватись і масив AL2 AL.set(2, 55); AL.set(3, 88); // AL2 => 20 555 888 // 6. Вивести підмасив System.out.print("AL2 => "); for (int i=0; i<AL2.size(); i++) System.out.print(AL2.get(i) + " "); System.out.println(); // 7. Очистити масив AL2 AL2.clear(); // 8. Вивести вихідний масив System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); } }
Результат виконання програми
AL => 10 20 30 40 50 60 70 AL2 => 20 30 40 AL2 => 20 55 88 AL => 10 50 60 70
⇑
3. Метод toArray(). Конвертувати масив ArrayList у масив типу Object[]
Метод toArray() конвертує масив ArrayList у масив типу Object[]. Згідно з документацією оголошення методу наступне
public Object[] toArray();
Приклад.
У прикладі створюється масив символів типу ArrayList. Потім цей масив конвертується у масив типу Object[].
import java.util.*; public class TrainCollections { public static void main(String[] args) { // Метод toArray() - отримати підмасив на основі заданого масиву // 1. Створити масив символів ArrayList<Character> AL = new ArrayList<Character>(); AL.add('0'); AL.add('1'); AL.add('2'); AL.add('3'); AL.add('4'); AL.add('5'); // 2. Вивести вихідний масив AL System.out.print("AL => "); for (int i=0; i<AL.size(); i++) System.out.print(AL.get(i) + " "); System.out.println(); // 3. Конвертувати у масив типу Object[] Object AC[] = AL.toArray(); // 4. Вивести масив AC System.out.print("AC => "); for (int i=0; i<AC.length; i++) System.out.print(AC[i] + " "); System.out.println(); } }
Результат виконання програми
AL => 0 1 2 3 4 5 AC => 0 1 2 3 4 5
⇑
4. Метод retainAll(). Сформувати новий масив, що містить елементи заданої колекції
Метод retainAll() дозволяє у заданому масиві зберегти тільки ті елементи, що визначені в заданій колекції. Іншими словами, метод видаляє з масиву елементи, що не містяться в заданій колекції. Згідно з документацією оголошення методу має наступний вигляд
public boolean retainAll(Collection<?> c);
тут
- c – колекція елементів, які потрібно зберегти у вихідному масиві.
Якщо у вихідному масиві відбулись зміни, то метод повертає true.
Приклад. У прикладі виконуються наступні дії:
- створюється вихідний масив цілих чисел AL;
- створюється масив AL2, що містить числа які потрібно залишити в масиві AL;
- викликається метод retainAll() для масиву AL.
import java.util.*; import java.util.function.*; public class TrainCollections { public static void main(String[] args) { // Метод retainAll() - сформувати новий масив на основі заданого // 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(5); AL.add(8); AL.add(4); // 2. Вивести вихідну колекцію цілих чисел з допомогою ітератора Iterator<Integer> it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) System.out.print(it.next()+" "); System.out.println(); // 3. Сформувати колекцію елементів, які потрібно залишити в масиві AL ArrayList<Integer> AL2 = new ArrayList<Integer>(); AL2.add(2); AL2.add(4); AL2.add(6); AL2.add(8); // 4. Вивести колекцію AL2 System.out.print("AL2 => "); for (int i=0; i<AL2.size(); i++) System.out.print(AL2.get(i) + " "); System.out.println(); // 5. Викликати метод retainAll() AL.retainAll(AL2); // 6. Вивести змінену колекцію AL it = AL.iterator(); System.out.print("AL => "); while (it.hasNext()) { System.out.print(it.next() + " "); } } }
Результат виконання програми
AL => 2 3 2 4 7 3 5 8 4 AL2 => 2 4 6 8 AL => 2 2 4 8 4
⇑
Споріднені теми
- Клас ArrayList. Динамічний масив. Загальні відомості. Створення масиву
- Методи, що змінюють дані в масиві. Методи add(), addAll(), clear(), remove(), removeAll(), removeIf(), replaceAll(), set(), sort()
- Методи, що визначають інформацію про елементи масиву. Методи get(), contains(), containsAll(), indexOf(), lastIndexOf(), iterator(), listIterator()
- Методи, що визначають загальні характеристики масиву. Методи ensureCapacity(), isEmpty(), size(), trimToSize()
⇑