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, як ми й хотіли.


16
Задача
Java Syntax Zero,  16 рівень4 лекція
Недоступна
Пишемо байти у файл
Аміго отримав завдання: записати байти у файл. Він написав програму, яка зчитує з консолі шлях до файлу і записує в цей файл послідовність байтів, отриману з аргументу методу main(String[]). Але він припустився помилки в коді програми. Як тобі відомо, BufferedWriter «не працює» з байтами: для запису

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

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

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

list.remove(3);

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

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

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

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

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


16
Задача
Java Syntax Zero,  16 рівень4 лекція
Недоступна
Пишемо символи у файл
Є програма, яка зчитує з консолі шлях до файлу і записує в цей файл послідовність символів, отриману з аргументу методу main(String[]). Твоє завдання — виправити помилку, щоб масив символів можна було записати у файл. Для запису символів у файл потрібно використати об'єкт BufferedWriter, отриманий у

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);

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


16
Задача
Java Syntax Zero,  16 рівень4 лекція
Недоступна
Назворот
У цій задачі необхідно перевернути рядок і вивести його на екран у зворотному порядку за допомогою PrintStream. Метод printSomething(String) виводить у поле stream переданий рядок. Необхідно перевернути рядок і вивести його у зворотному порядку за допомогою PrintStream. Метод main(String[] args) зчи