#java
Есть какой-нибудь красивый способ получения индекса первого not null элемента массива? Да, можно написать int index; for (int i = 0; i < arr.length; i++) { if (arr[i] != null) { index = i; break; } } но, может, есть какой-нибудь более красивый способ для этого? Например, для получения первого not null элемента массива есть метод ObjectUtils.firstNonNull, может, есть что-то похожее и для получения индекса?
Ответы
Ответ 1
Можно написать цикл чуть короче: 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): staticint firstNotNullIndex(T[] arr) { for (int i = 0; i < arr.length; ++i) if (arr[i] != null) return i; // или `return -1` return arr.length; } Ответ 2
Может так (java 8, для String)?: Arrays.asList(array).indexOf(Arrays.stream(array).filter(Objects::nonNull).findFirst().get())Ответ 3
По-моему, вот самое изящное решение (благодаря помощи англоязычного SO): int titleIndex = IntStream.range(0, arr.length) .filter(i -> arr[i] != null) .findFirst().getAsInt();
Комментариев нет:
Отправить комментарий