Java. Клас ArrayList. Методи що перетворюють масив в цілому

Клас ArrayList. Методи що перетворюють масив в цілому


Зміст


Пошук на інших ресурсах:

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

 


Споріднені теми