Есть ли итератор для циклического преобразования структуры данных в циклы?Создание структуры данных в Java
Допустим есть массив:
int[] arr = {-1,5,7,-1,-1,-1}
Я хочу индекс находки первого, не значение -1 из этого массива и начинает поиска от случайной позиции (IDX = random.nextInt (arr.length)). Например idx = 4;
Итак, сначала проверьте, если arr [4] == -1, то если arr [5] == -1 и так далее. Если конец массива достигнут тогда, начните с позиции 0 и продолжайте до тех пор, пока не будет найдено -1. Гарантируется, что в массиве будет хотя бы одно значение, не равное -1.
Это можно сделать так:
int idx = -1;
for (int i = random.nextInt(arr.length); ; i++) {
if (i == arr.length) {
/** start over */
i = 0;
}
if (-1 != arr[i]) {
idx = i;
break;
}
}
Или так:
int idx = -1;
int i = random.nextInt(arr.length);
do {
if (-1 != arr[i]) {
idx = i;
}
i == arr.length ? i=0 : i++;
} while (-1 == idx);
Есть итератор, который поддерживает велосипедный (слово следующему(), если конец массива достигается автоматически начать от 0)?
Ограничения: 1) эффективность не учитывается; 2) стандартным Java API является предпочтительным.
Можно построить такой итератор, но он будет менее понятным, менее эффективным и менее простым, чем использование уже существующих циклов. – Boann