Как определить положение в foreach?
От: vitorg Россия  
Дата: 27.07.09 13:25
Оценка:
Привет!

Есть ли в Java какая-нибудь возможность внутри foreach-цикла определить является ли текущий элемент первым/последним? Во время отладки видны переменные-счётчики типа $i, но как до них достучаться?
Jabber: vitorg@jabber.org
Re: Как определить положение в foreach?
От: Blazkowicz Россия  
Дата: 27.07.09 13:30
Оценка: +1
Здравствуйте, vitorg, Вы писали:

V>Есть ли в Java какая-нибудь возможность внутри foreach-цикла определить является ли текущий элемент первым/последним? Во время отладки видны переменные-счётчики типа $i, но как до них достучаться?

Enhanced foreach loop это всего лишь синтаксический сахар для интерфейса Iterator. Если нужно использовать методы итератора то их стоит использовать явно. В чем бенефиты от хака затрудняющего чтение кода?
Re[2]: Как определить положение в foreach?
От: vitorg Россия  
Дата: 27.07.09 13:35
Оценка:
Здравствуйте, Blazkowicz, Вы писали:

B>Enhanced foreach loop это всего лишь синтаксический сахар для интерфейса Iterator. Если нужно использовать методы итератора то их стоит использовать явно. В чем бенефиты от хака затрудняющего чтение кода?


Я в курсе, что такое foreach, но ИМХО его использование как раз облегчает чтение кода. Не хотелось бы здесь спорить о бенефитах foreach, больше интересуют ответы по сути вопроса.
Jabber: vitorg@jabber.org
Re[3]: Как определить положение в foreach?
От: GarryIV  
Дата: 27.07.09 13:41
Оценка:
Здравствуйте, vitorg, Вы писали:

B>>Enhanced foreach loop это всего лишь синтаксический сахар для интерфейса Iterator. Если нужно использовать методы итератора то их стоит использовать явно. В чем бенефиты от хака затрудняющего чтение кода?


V>Я в курсе, что такое foreach, но ИМХО его использование как раз облегчает чтение кода. Не хотелось бы здесь спорить о бенефитах foreach, больше интересуют ответы по сути вопроса.


По моему все предельно ясно — либо while\for либо разного рода хаки.
WBR, Igor Evgrafov
Re[3]: Как определить положение в foreach?
От: elmal  
Дата: 27.07.09 14:28
Оценка:
Здравствуйте, vitorg, Вы писали:

V>Я в курсе, что такое foreach, но ИМХО его использование как раз облегчает чтение кода. Не хотелось бы здесь спорить о бенефитах foreach, больше интересуют ответы по сути вопроса.

Ответ — по хорошему никак. Можно с помощью хаков конечно (перед вызовом forEach посчитать число элементов, и это проверять), или еще как исхитриться, но оно надо? В 100 раз более нечитабельно получится, чем при обычном использовании итератора в стиле Java 1.4. Если уж красоты хочется, ну оберни ты это красиво, например :
    public static void main(String[] args) {
        List lst = getTestList();

        Iterator it = lst.iterator();

        final StringBuffer result = new StringBuffer();

        IteratorWrapper.wrap(it).forEach(new Action() {
            public void execute(Object value, Iterator it) {
                result.append(value.toString());
                if (it.hasNext()) {
                    result.append(",");
                }
            }
        });
        print(result.toString());
    }
Re: Как определить положение в foreach?
От: LeonidV Ниоткуда http://vygovskiy.com
Дата: 28.07.09 10:33
Оценка:
Только счетчиком, считая количество пройденных итераций. Вам уже правильно написали — незачем использовать молоток там, где нужен перфоратор. Хотя и можно, конечно.
http://jvmmemory.com — простой способ настройки JVM
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.