У меня есть улучшенный цикл for, в котором я повторяю NodeList как

String nodename = null;
for(node node : nodeList) {
   nodename = node.getNodeName();
    ...
    ...
}

Здесь у меня проблема. Я хочу сравнить два последовательных имени узла в nodeList во время итерации и вернуть, если они найдены одинаковыми.

Как получить два последовательных элемента в расширенном цикле for?

Пожалуйста, помогите мне. Я использую стратегию синтаксического анализа DOM.

-2
Vishnukk 3 Апр 2014 в 13:30
Вы не против изменить расширенный цикл for на обычный цикл for. то вы можете получить любое значение на основе индекса.
 – 
vikeng21
3 Апр 2014 в 13:35
Тогда вы не будете использовать цикл for-each.
 – 
Brian Roach
3 Апр 2014 в 13:36

2 ответа

Лучший ответ

Вы не можете получить два последовательных элемента в этой области с помощью быстрого перечисления.

Вместо этого используйте Iterator:

Iterator<Node> i = nodeList.iterator();
while (i.hasNext()) {
    Node next = i.next();
    Node following = null;
    if (i.hasNext()) {
        following = i.next();
    }
}

Или, как предлагает vikeng21, используйте обычный цикл for и сравните следующий индекс с размером List, чтобы избежать IndexOutOfBoundsException s.

1
Mena 3 Апр 2014 в 13:35
String lastNode    = null;

for (Node n : nodeList) {
    if (n.equals(lastNode)
        return n;

    lastNode = n;
}
0
ifloop 3 Апр 2014 в 13:35