Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > for - Цикл и List Iterator


Автор: Entwickler 9.7.2010, 20:59
привет всем!!!

вот такой вопросик... есть цикл FOR должен пробежать массив с элементами, а внутри ещё и итератор который бегает по листу с сравнивает элементы массива и элементы листа...
Код

for(int i = 0; i < elementList.getLength(); i++) {
  Node node = elementList.item(i);
    if(checkElementType(node)){
        Element element    = (Element) node;
        String element_id_attr = getElementIdAttr(element);
        while(diffElementIter.hasNext()) {
            String diffElement = (String) diffElementIter.next();
            System.out.println(element_id_attr + "\t" + diffElement);

            if(diffElement.equalsIgnoreCase(element_id_attr)) {
                printElement(element);
            }
        }
    }
}


так вот он заходит в цикл, берёт первый элемент идет дальше, заходит в лист пробигает его (в листе всего 8) елементов и прекращает работу!!! то есть FOR дальше не идет.... он выходит из цикла... а мне нужно чтобы FOR пробугался бы полностью!!! все 329!!! элементов!!!

что может быть такого?

Автор: soulcub 9.7.2010, 21:14
Оно точно только 1 раз заходит в for? Или просто 1-й раз делает то что нужно, а остальные ни делает ничего?
Есть подозрения что итератор на цикл while пробегает до своего конца, а на следующей итерации diffElementIter.hasNext() - false, потому что в прошлой итерации мы пробежали до конца. Не вижу чего-то типа возвращения в начало diffElementIter. 

Автор: Entwickler 9.7.2010, 21:17
а что итератор можно вернуть в начало? как типо ResultSet.beforeFirst ?! незнал... как?

Автор: jk1 9.7.2010, 21:27
Итератор нельзя вернуть в начало. Можно брать у коллекции новый итератор каждый раз, когда требуется проход по ней.
Однако в вашем случае скорее всего подойдет цикл for each, пример:
Код

List<String>= ...;
for(String item: list){
System.out.println(item);
}

Итератор, как правило, используют в тех случаях, когда требуется удалять или добавлять элементы по время обхода коллекции.

Автор: Entwickler 9.7.2010, 21:31
хм... хорошо попробую... спасибо за участие...

Автор: soulcub 9.7.2010, 21:36
Ну я не имел ввиду возвращение на начало в буквальном смысле. Потому и написал "Что-то типа возвращения".

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)