/ / Wie erhalte ich den Index des ersten Nicht-Null-Array-Elements? - Java, Arrays

Wie erhält man den Index des ersten Arrayelements nicht null? - Java, Arrays

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 № 1

Ein 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);
}