有没有很好的方法来获取第一个非null String数组元素的索引?是的,你可以写
Request
但也许有可能以更美丽的方式做到这一点?例如,您可以使用response.meta
方法获取数组的第一个非null元素,也许有类似于获取索引的东西?
答案 0 :(得分:8)
一个技巧是创建一个索引流,然后找到第一个指向非空值的索引:
int index =
IntStream.range(0, arr.length)
.filter(i -> arr[i] != null)
.findFirst()
.orElse(-1 /* Or some other default */);
答案 1 :(得分:3)
如果您使用Java 9
,则会有一个名为takeWhile()
的方法。你可以在你的数字数组中使用它。
long index = Arrays.stream(yourArray).takeWhile(Objects::isNull).count();
修改强>
如果没有非null元素,index将等于数组的长度。
你可以检查它。
if(index == array.length) {
index = -1;
}
答案 2 :(得分:1)
例如,就像早于8的Java版本一样:
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);
}
答案 3 :(得分:0)
Object [] dizi = {1,2,3,4,5,6,null,8,9,10};
Object t = null;
int len = dizi.length;
System.out.println(IntStream.range(0, len).filter(i -> t == dizi[i]).findFirst().orElse(-1)); // can't find.);