Страницы

Поиск по вопросам

пятница, 9 ноября 2018 г.

Получение индекса первого not null элемента массива

Есть какой-нибудь красивый способ получения индекса первого not null элемента массива? Да, можно написать
int index; for (int i = 0; i < arr.length; i++) { if (arr[i] != null) { index = i; break; } }
но, может, есть какой-нибудь более красивый способ для этого? Например, для получения первого not null элемента массива есть метод ObjectUtils.firstNonNull, может, есть что-то похожее и для получения индекса?


Ответ

Можно написать цикл чуть короче:
int index = 0; while (index < arr.length && arr[index] == null) ++index;
Или даже:
int index = -1; while (++index < arr.length && arr[index] == null) {}
Или вот вариант с for (спасибо @Qwertiy!):
int index; for (index = 0; index < arr.length && arr[index] == null; ++index);
Также можно написать свой метод для этого, использующий любой из способов выше, либо вот так (Ideone):
static int firstNotNullIndex(T[] arr) { for (int i = 0; i < arr.length; ++i) if (arr[i] != null) return i;
// или `return -1` return arr.length; }

Комментариев нет:

Отправить комментарий