JavaRush/Курси/Java Syntax Zero/Робота з ArrayList, частина 2

Робота з ArrayList, частина 2

Відкрита

1. Додавання елемента в середину (або в початок) списку

Якщо ж ми хочемо вставити елемент в середину списку, то всередині списку відбувається от що.

Припустімо, у нас є список з 11 елементів:

Ми хочемо вставити число 10 000 у список на позицію з номером 5. Для цього потрібно лише виконати команду:

list.add(5, 10000);

де list — це змінна типу ArrayList, метод add(int index, тип value) додає значення 10000 на позицію 5 у списку. От що в цьому разі відбудеться в методі add():

Крок 1: усі елементи масиву починаючи з 5-го буде зсунуто (скопійовано) на 1 елемент у напрямку кінця масиву:

Зверніть увагу: елементи в 5-й і 6-й комірках масиву тепер однакові.

Крок 2: записуємо в 5-у комірку значення 10 000:

Тепер у списку є всі елементи масиву, а в п'ятій комірці записано число 10 000, як ми й хотіли.


13
Задача
Java Syntax Zero,  13 рівень5 лекція
Недоступна
Сонячна система
У 3020 році вчені навчилися створювати нові планети, одну з яких відправили в Сонячну систему. Орбіта цієї планети пролягає між орбітами Землі та Марса. Реалізуй метод createNewPlanet(String), який має додавати передану планету в список planets одразу за Землею. Подивись, як змінилася послідовність

2. Видалення елемента зі списку

Операція видалення елемента зі списку аналогічна його додаванню, тільки процес зворотний.

Давайте видалимо зі списку елемент із номером 3. Для цього потрібно виконати команду:

list.remove(3);

От що в цьому разі відбудеться в методі remove():

Крок 1: елементи масиву починаючи з 4-го буде зсунуто (скопійовано) на одну позицію ближче до початку масиву:

Крок 2: значення змінної size буде зменшено на 1.

Зверніть увагу: кінець масиву виділено сірим кольором, і там є якісь значення. З технічного погляду це сміття. Його треба видалити, щоб не заважати процесу збирання сміття.

Крок 3: видалення сміття


13
Задача
Java Syntax Zero,  13 рівень5 лекція
Недоступна
Бувай, Паскалю
У методі main знайди й видали мову програмування Pascal зі списку programmingLanguages.

3. Практичні приклади роботи зі списком у Java

Напишімо кілька прикладів роботи зі списками.

Занесімо до списку всі парні числа від 1 до 20:

Код Примітки
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
Створюємо об'єкт-список

Цикл по всіх числах 1 .. 20
Якщо число ділиться на 2 без остачі,
додати його до списку

А тепер виведімо всі елементи списку на екран:

Код Примітки
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
Створюємо об'єкт-список
Цикл по всіх числах 1 .. 20

Якщо число ділиться на 2 без остачі,
додати його до списку

Цикл від нуля до розміру списку
Виводимо кожний елемент на екран

Видалення елементів:

А тепер видалімо всі елементи, які діляться на 4. Зверніть увагу, що відразу після видалення одного елемента зі списку позиції решти елементів змінюються.

Код Примітки
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
Створюємо об'єкт-список

Цикл по всіх числах 1 .. 20
Якщо число ділиться на 2 без остачі,
додати його до списку

Цикл від нуля до розміру списку
Якщо елемент списку ділиться на 4 без остачі:

а) видаляємо елемент
б) зменшуємо лічильник i, щоб на наступному витку циклу знову потрапити на той самий елемент

Припустімо, вам потрібно видалити 3 останніх елементи списку.

Як зробити це неправильно:

Код Примітки
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
Створюємо об'єкт-список

У списку 10 елементів: 2, 4, 6, ... 20



n = 10
n - 3 = 7 (у списку залишилось 9 елементів)
n - 2 = 8 (у списку залишилось 8 елементів)
n - 1 = 9 (у списку залишилось 7 елементів)

Після видалення 7-го й 8-го елементів у списку залишиться всього 8 елементів. Тому 9-й елемент видалити не вдасться — у програмі виникне помилка.

Як видаляти елементи правильно:

Варіант 1 Варіант 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

Елементи потрібно видаляти або з кінця або просто в одному й тому самому місці, а після кожного видалення елементи зсуватимуться на одну позицію.


13
Задача
Java Syntax Zero,  13 рівень5 лекція
Недоступна
Розбираємо піраміду з келихів
Задача проста: потрібно розібрати піраміду з келихів. А допоможе нам у цьому метод removeGlassesReverse. Цей метод має прибирати кожен ряд, починаючи з верхнього (з кінця списку). Тобі потрібно реалізувати цей метод. У тестуванні тобі допоможе метод main. Спробуй запустити програму й подивитися, що