java foreach स्किप करें पहले पुनरावृति




iteration skip (8)

SeanA के कोड में एक छोटी सी त्रुटि है: सबलिस्ट के लिए दूसरा तर्क एक अनन्य सूचकांक के रूप में माना जाता है, इसलिए हम बस लिख सकते हैं

for (Car car : cars.subList(1, cars.size()) {
   ...
}

(मैं जवाब पर टिप्पणी करने में सक्षम नहीं लगता, इसलिए नया जवाब। क्या मुझे ऐसा करने के लिए एक निश्चित प्रतिष्ठा की आवश्यकता है?)

https://code.i-harness.com

वहाँ एक सुंदर तरीका है एक Java5 foreach पाश में पहली पुनरावृत्ति को छोड़ना है?

उदाहरण छद्म कोड:

for ( Car car : cars ) {     
   //skip if first, do work for rest
   .
   .
}

अमरूद Iterables.skip() उपयोग करें।

कुछ इस तरह:

for ( Car car : Iterables.skip(cars, 1) ) {     
    // 1st element will be skipped
}

(इसे msandiford के जवाब के अंत से मिला और इसे एक स्टैंडअलोन उत्तर बनाना चाहते थे)


इतना सुंदर नहीं है लेकिन पुनरावृत्तियों के साथ काम करते हैं

Iterator<XXXXX> rows = array.iterator();
if (rows.hasNext()){
    rows.next();
}
for (; rows.hasNext();) {
    XXXXX row = (XXXXX) rows.next();
}

नए जावा 8 स्ट्रीम एपीआई के साथ यह वास्तव में बहुत सुरुचिपूर्ण हो जाता है। बस skip() विधि का उपयोग करें:

cars.stream().skip(1) // and then operations on remaining cars

मैं इसे सुरुचिपूर्ण नहीं कहूंगा, लेकिन शायद "पहले" बूलियन का उपयोग करने से बेहतर है:

for ( Car car : cars.subList( 1, cars.size() ) )
{
   .
   .
}

इसके अलावा, शायद कोई सुंदर तरीका नहीं है।


मैं एक जावा व्यक्ति नहीं हूं, लेकिन क्या आप इसका उपयोग कर सकते हैं:

for ( Car car : cars.tail() ) java.util से Groovy JDK के माध्यम से


सुरुचिपूर्ण? ज़रुरी नहीं। आपको एक बूलियन की जांच / सेट करने की आवश्यकता होगी।

प्रत्येक लूप के लिए सभी व्यावहारिक उद्देश्यों के लिए एक वाक्यविन्यास का उपयोग करने के लिए फैंसी सिंटैक्स है। अपने लूप को शुरू करने से पहले आप केवल एक पुनरावृत्त का उपयोग करना और आगे बढ़ना बेहतर है।


for (Car car : cars)
{
   if (car == cars[0]) continue;
   ...
}

मेरे लिए पर्याप्त सुरुचिपूर्ण।







skip