Java, почему не существует третьего синтаксиса для циклов for (each)?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java, почему не существует третьего синтаксиса для циклов for (each)?

Сообщение Anonymous »

Я знаю, что в настоящее время существует два подхода к перебору списка. Но давайте немного усложним ситуацию:
  • Вы выполняете итерацию по List list.
  • Вы хотите отслеживать int y на каждой итерации.
  • Существует функцияprocess(E elem, int y), которая обрабатывает элемент.
Вариант 1:

Код: Выделить всё

for (int i = 0, y = 0; i < list.size(); i++, y++) {
process(list.get(i), y);
}
что на самом деле так и есть

Код: Выделить всё

for (int i = 0; i < list.size(); i++) {
process(list.get(i), i);
}
Вариант 2:

Код: Выделить всё

int y = 0;
for (E elem : list) {
process(elem, y);
y++;
}
который можно переписать на

Код: Выделить всё

int y = 0;
for (E elem : list) {
process(elem, y++);
}
Однако почему следующего не существует? Какие возражения против его отсутствия?

Вариант 3:

Код: Выделить всё

for (int y = 0; E elem : list; y++) {
process(elem, y);
}
Два аргумента для этой конструкции:
  • Оба синтаксиса foreach различимы.
  • Многие объекты реализуют Iterable, но не имеют аналога for. Это происходит, например, когда Iterable не имеет связанного с ним порядка.


Подробнее здесь: https://stackoverflow.com/questions/178 ... oops-exist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»