Gibt es eine gute Möglichkeit, den Index des ersten Nicht-Null-String-Array-Elements abzurufen? Ja, du kannst schreiben
int index;
for (int i = 0; i < arr.length; i++) {
if (arr[i] != null) {
index = i;
break;
}
}
aber vielleicht ist es möglich, es auf eine schönere Weise zu tun? Zum Beispiel können Sie verwenden ObjectUtils.firstNonNull
Methode, um das erste Nicht-Null-Element des Arrays zu erhalten, gibt es vielleicht etwas Ähnliches, um den Index zu erhalten?
Antworten:
7 für die Antwort № 1Ein Trick besteht darin, einen Strom von Indizes zu erstellen und dann den ersten zu finden, der auf einen Wert ungleich Null verweist:
int index =
IntStream.range(0, arr.length)
.filter(i -> arr[i] != null)
.findFirst()
.orElse(-1 /* Or some other default */);
3 für die Antwort № 2
Wenn Sie verwenden Java 9
Es gibt eine Methode namens takeWhile()
. Sie können es in Ihrem Array von Zahlen wie folgt verwenden.
long index = Arrays.stream(yourArray).takeWhile(Objects::isNull).count();
Bearbeiten
Falls keine Nicht-Null-Elemente vorhanden sind, entspricht der Index der Länge des Arrays.
Sie können es überprüfen.
if(index == array.length) {
index = -1;
}
1 für die Antwort № 3
Zum Beispiel so in einer Java-Version vor 8:
static final Object ANY_NOT_NULL = new Object()
{
@Override
public boolean equals(final Object obj)
{
return obj != null;
}
};
public static int firstIndexOfNotNull(Object... values)
{
return Arrays.asList(values).indexOf(ANY_NOT_NULL);
}