LINUX.ORG.RU

узнать текущий интекс в for-each в java


0

0

Хочется использоваться for-each цикл в java, но иногда сталкиваюсь с необходимостью узнать индекс текущей итерации (например, часто нужно сделать какое-то дополнительное действие со всеми элементами, кроме последнего).

Добавлять дополнительный счетчик индекса как-то некрасиво получается - уж лучше использовать обычный цикл:

int i = 0; for (Object val : array) { /// ... if(i < array.length - 1) {...} i++; }

Может есть какой-нибудь способ узнать текущий индекс без такого уродства - средствами языка? Что-то типа 'for.currentIndex' или типа того.

Подозреваю, что нельзя, но JSP вселяет надежду - в JSTL есть такое понятие, как loopStatus, который может дать текущий индекс и еще некоторые потенциально полезные вещи: http://www.java2s.com/Code/Java/JSTL/JSTLforeachandstatus.htm

★★★★★

<troll_mode>
А вот если бы все писали на D!

foreach (i, val; array) {
    ...
}
</troll_mode>

naryl ★★★★★
()

Этот синтаксис работает не только с массивами, а ещё и со всем, что реализует Iterable, например, с множествами, а там вообще нет понятия индекса. Поэтому, то, что ты просишь - невозможно.

meta-anonymous
()

> Добавлять дополнительный счетчик индекса как-то некрасиво получается - уж лучше использовать обычный цикл:

А чем он тебя, кстати, не устраивает?

smh ★★★
()

В питоне можно так:

for i, item in enumerate (sequence):
    <....>

Joe_Bishop
()

я так предполагаю что должно быть у array поведение last,first ...

возможно ошибаюсь так как быдложабу не знаю - иначе не называл бы не отзывался бы о ней так :) - а хвалил бы -> во.

^-^

paranormal ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.