如何获取第一个非null数组元素的索引?

Kse*_*nia 1 java arrays

有没有什么好方法来获取第一个非null String数组元素的索引?是的,你可以写

int index;
for (int i = 0; i < arr.length; i++) {
   if (arr[i] != null) {
       index = i;
       break;
   }
}
Run Code Online (Sandbox Code Playgroud)

但也许有可能以更美丽的方式做到这一点?例如,您可以使用ObjectUtils.firstNonNull方法来获取数组的第一个非null元素,也许有类似于获取索引的东西?

Mur*_*nik 8

一个技巧是创建索引流,然后找到指向非空值的第一个索引:

int index =
    IntStream.range(0, arr.length)
             .filter(i -> arr[i] != null)
             .findFirst()
             .orElse(-1 /* Or some other default */);
Run Code Online (Sandbox Code Playgroud)