/ / पहली नहीं अशक्त सरणी तत्व का सूचकांक कैसे प्राप्त करें? - जावा, सरण

पहली नल सरणी तत्व की अनुक्रमणिका कैसे प्राप्त करें? - जावा, सरणी

वहाँ पहले नहीं अशक्त सरणी तत्व के सूचकांक पाने के लिए कोई अच्छा तरीका है? हां, आप लिख सकते हैं

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

लेकिन शायद इसे और अधिक सुंदर तरीके से करना संभव है? उदाहरण के लिए, आप उपयोग कर सकते हैं ObjectUtils.firstNonNull विधि सरणी का पहला नहीं अशक्त तत्व प्राप्त करने के लिए, शायद वहाँ सूचकांक प्राप्त करने के लिए कुछ इसी तरह की है?

उत्तर:

उत्तर № 1 के लिए 7

एक ट्रिक इंडेक्स की एक धारा बनाने के लिए है, और फिर पहले वाले को एक अशक्त मान की ओर संकेत करता है:

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

जवाब के लिए 3 № 2

यदि आप उपयोग कर रहे हैं Java 9 एक विधि कहा जाता है takeWhile()। आप इसे अपनी संख्याओं की तरह उपयोग कर सकते हैं।

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

संपादित करें

यदि कोई गैर-शून्य तत्व नहीं हैं, तो सूचकांक सरणी की लंबाई के बराबर होगा।

आप इसके लिए एक जांच कर सकते हैं।

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

उत्तर № 3 के लिए 1

उदाहरण के लिए, जावा संस्करण में पहले की तरह 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);
}