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

时间:2017-10-12 12:51:21

标签: java arrays

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

Request

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

4 个答案:

答案 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.);