Решил задачу, но долго ломал голову, в чем проблема.
Но, честно говоря, до сих пор не понимаю, если list.remove(2) убирает элемент и сдвигает список, то почему в переборе для вывода на экран, вот такая запись - " int j = ist.sizle(); ", ведь элемент уже убран из списка ?
Ayzek
24 уровень
Подскажите плз
Обсуждается
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Aleksei Reinsalu
11 ноября 2021, 15:47
если нет необходимости в знании количества элементов, абстрагируйтесь от него заменив for на foreach
0
Ayzek
29 июня 2021, 07:39
Как я это понимаю
Был список из 5 строк
List.remove(2) удалил 3 индекс со сдвигом
И теперь по идее list.size() должен дать цифру 4 (количества оставшихся строк)
+1
Ayzek
29 июня 2021, 07:28
Вроде понял.
Только это не согласуется с
"У метода remove() есть две особенности. Во-первых, он не оставляет “дыр”. В нем уже реализована логика сдвига элементов при удалении элемента из середины, которую мы ранее писали руками. "https://javarush.com/groups/posts/1935-udalenie-ehlementa-iz-spiska-arraylist
0
Кирилл
18 ноября 2022, 13:08
Как раз наоборот, согласуется.
0
Yeikovych Volodymyr
29 июня 2021, 06:37
list.size() - Возвращает длину списка. Например у тебя в списке есть 3 значения:
1, 2, 3. Если вызвать list.size() - то результат будет 3. list.remove(index); - удаляет элемент из списка по индексу. Имея тот же список 1 - будет иметь индекс 0, 2 - индекс 1, 3 - индекс 2. Поскольку list.size - возвращает 3, то есть длину массива, или кол-во элементов. То чтобы удалить цифру '3' в массиве - потребуется сделать так: list.remove(list.size() - 1); Надеюсь доступно объяснил :)
+1