• ,

level07.lesson09.task03

   Добрый день, уважаемые. Сижу над очередной задачей по ArrayList, и ещё больше понимаю, что абсолютно не понимаю как же в памяти происходят все эти процессы. Для того чтобы выразить свою мысль, я процитирую условие задачи, и как я понимаю, как оно должно работать. Условие задачи:
1. Создай список из слов «мама», «мыла», «раму».
2. После каждого слова вставь в список строку, содержащую слово «именно».
   Значит допустим, есть некий внутренний массив. Изначально мы вносим туда три слова: мама, мыла, раму (условно s1, s2, s3). Соответственно: s1 встаёт на ячейку в массиве «0», s2 — «1», и s3 на «2». По условию задачи нам надо вставить после каждого слова «именно». Как я понимаю, чтобы осуществить это, нам надо как бы «раздвинуть слова в массиве». То есть, s2 поставить в ячейку «2», а s3 в ячейку «4» (как на скриншоте).

Соответственно этому, по-моему сам процесс происходит следующим образом:
  1. Берем данные из ячейки #1 и копируем её в ячейку #2
  2. Данные из ячейки #2 переносятся в ячейку #3
  3. Берем данные из ячейки #3 и копируем в ячейку #4
Теперь в ячейки #1, #3 и #5 вставляем слово «именно». Собственно это я попытался выполнить в программе вручную без цикла, чтобы понять как оно работает.

list.add(2, list.get(1));
        list.add(4, list.get(3));

        list.add(1, "именно");
        list.add(3, "именно");
        list.add(5, "именно");

Вывод этого:
мама
именно
мыла
именно
мыла
именно
раму
раму

Прошу разобраться как же сделать эту задачу, и почему именно так. Заранее благодарен.
P.S. приношу извинение за такое огромное объяснение.
P.P.S. бывают такие темы, когда ну ни в какую не доходит, хоть застрелись.

4 комментария

Gopnik
  • Gopnik
  • +3
  • Комментарий отредактирован 2015-12-08 14:40:38 пользователем Gopnik
Предварительно копировать ничего не надо. При использовании метода add с указанием позиции вставки, все последующие элементы в списке сдвигаются автоматически. Если нужно вставить в средину списка новый элемент без сдвига последующих, с заменой существующего элемента, то для этого есть метод set.
panzhik
не путай с обычным массивом. здесь все проще и функциональнее. Внимательно прочитай эту тему, если мне не изменяет память, то там есть объяснение принципиального различия между array и ArrayList. Воспользуйся методом add() и ничего никуда не сдвигай, оно все сдвинется за тебя :) только не забудь учесть смещение индексов значений при добавлении элементов ;)
SonicBIast
Если тебе нужно решение то первые две строки лишние!
Ну а если ты хочешь понять как работает список ArrayList, ну так погугли! Тогда все станет понятно.
вот интересная статья Java собеседование. Коллекции
Swapped
Спасибо большое за ответы! Всё сразу прояснилось. :)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.