powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление элементов из ArrayList
5 сообщений из 5, страница 1 из 1
Удаление элементов из ArrayList
    #38370226
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Пишу программу, которая удаляет каждый второй элемент из списка до тех пор, пока не останется в списке один элемент.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
public class Task12 {

    public ArrayList removeSecondElement(ArrayList list) {
        Iterator iterator = list.iterator();
        while (iterator.hasNext()) {
            if (iterator.next() != (list.get(list.size() - 1))) {
                iterator.next();
                iterator.next();
                iterator.remove();
            } else {
            }
        }

        return list;
    }

    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList();

        for (int i = 0; i < 25; i++) {
            list.add(i);
        }

        Task12 task = new Task12();
        while (list.size() != 1) {
           list = task.removeSecondElement(list);
        }

        System.out.println(list);
    }
}



После запуска, ругается на iterator.next();, пишет:
Exception in thread "main" java.util.NoSuchElementException
at java.util.ArrayList$Itr.next(ArrayList.java:794)
at Task12.removeSecondElement(Task12.java:14)
at Task12.main(Task12.java:35)
Java Result: 1

Но ведь я написал там проверку, что если элемент в списке последний, то не нужно получать следующий элемент:
Код: java
1.
if (iterator.next() != (list.get(list.size() - 1)))



Помогите, пожалуйста, разобраться в чем дело
...
Рейтинг: 0 / 0
Удаление элементов из ArrayList
    #38370238
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public void removeSecondElement(List<?> list) {
    Iterator<?> iterator = list.iterator();
    while (iterator.hasNext()) {
    	iterator.next();
    	if (iterator.hasNext()) { // ставим проверку перед вторым вызовом next()
	    	iterator.next();
	    	iterator.remove();
    	}
    }
}
...
// В методе main():
while (list.size() > 1) { 
	System.out.println(list);
	removeSecondElement(list);
}
removeSecondElement(list);
System.out.println(list);
...
Рейтинг: 0 / 0
Удаление элементов из ArrayList
    #38370276
Витяй1991
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Usman,

спасибо
...
Рейтинг: 0 / 0
Удаление элементов из ArrayList
    #38370335
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вам такой вариант?
Код: java
1.
2.
3.
4.
if (list.size()>0) {
   return Collections.singletonList(list.get(0));
}
return Collections.emptyList();
...
Рейтинг: 0 / 0
Удаление элементов из ArrayList
    #38370820
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Витяй1991, побольше-б таких программ как твоя. Хоть будет основание
внедрять мультиядерность в смартфоны.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление элементов из ArrayList
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]