簡體   English   中英

如何獲取第一個非空數組元素的索引?

[英]How to get index of the first not null array element?

有沒有什么好方法來獲取第一個非空字符串數組元素的索引? 是的,你可以寫

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

但也許有可能以更漂亮的方式做到這一點? 比如你可以使用ObjectUtils.firstNonNull方法來獲取數組的第一個非空元素,也許有類似的東西來獲取索引?

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

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

如果您使用的是Java 9 ,則有一個名為takeWhile()的方法。 你可以像這樣在你的數字數組中使用它。

long index = Arrays.stream(yourArray).takeWhile(Objects::isNull).count();

編輯

如果沒有非空元素,索引將等於數組的長度。

你可以檢查一下。

if(index == array.length) {
    index = -1;
}

例如,在 Java 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);
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM