Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление элементов из ArrayList / 5 сообщений из 5, страница 1 из 1
19.08.2013, 01:53:30
    #38370226
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из ArrayList
Здравствуйте.
Пишу программу, которая удаляет каждый второй элемент из списка до тех пор, пока не останется в списке один элемент.
Код: 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
19.08.2013, 04:15:38
    #38370238
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из ArrayList
Витяй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
19.08.2013, 09:00:52
    #38370276
Витяй1991
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Удаление элементов из ArrayList
Usman,

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


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