2015-06-11 43 views
7

हो सकता है कि पाश के लिए एक सामान्य कोड एक्स बार के एक ब्लॉक को दोहराने के लिए जिस तरह से अभी भी सही तरीका नहीं है, लेकिन मैं अगर वहाँ जावा 8.जावा 8

for (int i = 0; i < LIMIT; i++) { 
    // Code 
} 

में यह करने के लिए एक और अधिक संक्षिप्त तरीका है देखना चाहता था क्या ऐसा करने के लिए एक और जावा 8 रास्ता है। मुझे वास्तव में जरूरत नहीं है मुझे बस कुछ बार दोहराने की जरूरत है।

धन्यवाद, नाथन

+3

'IntStream.range() .Each()' करेगा। – Voo

+1

http://stackoverflow.com/questions/18532488/does-java-8-provide-a-good-way-to-repeat-a-value-or-function?rq=1 शायद यह? –

+1

यह भी देखें ["जावा 8 में अच्छा पुनरावृत्ति कैसे बनाएं"] (http://stackoverflow.com/q/27779568/2711488) – Holger

उत्तर

11

सबसे अच्छा तरीका है मैं कैसे IntStream.range(0, LIMIT).forEach($ -> code) की तरह यह कुछ होगा क्या करने पर देख सकते हैं।

+0

क्या आप स्पष्टीकरण दे सकते हैं कि आप पहचानकर्ता के लिए डॉलर चिह्न का उपयोग क्यों करते हैं? क्या यह अप्रयुक्त है जब यह '$' का उपयोग करने के लिए एक सम्मेलन है। साथ ही, क्या यह कभी भी एक संघर्ष का कारण बन सकता है (इसी कारण से पहचानकर्ताओं में '$' उपयोग सावधानी बरतता है) – swalog

+1

@swalog अन्य भाषाओं में '_' का उपयोग अप्रयुक्त पैरामीटर को इंगित करने के लिए किया जाता है, लेकिन जावा में इसकी अनुमति नहीं है, तो बस चुनें आपको क्या चाहिए। मैं इसका उपयोग करने वाला अकेला नहीं हूं (पीटर का जवाब देखें), लेकिन मुझे संदेह है कि कोई व्यापक प्रसार मुहावरे है। कंपाइलर आंतरिक कक्षाओं (वहां कोई जोखिम नहीं) के लिए '$' का उपयोग करता है, कुछ विशेष फ़ील्ड जैसे '$ दावा' अक्षम 'और संभावित रूप से (चेक नहीं किए गए) विधियों को लैम्बडास से बनाया गया है (फिर कोई जोखिम नहीं है)। जो भी आप चाहते हैं उठाओ। – Voo

+0

यदि आप लैम्ब्डा फ़ंक्शन में कॉल किया गया 'कोड' चेक अपवाद फेंकता है तो आपको बहुत कुछ करना होगा। आप Java8 Lambda में एक चेक अपवाद फेंक नहीं सकते हैं। – Shubham

5

इंटस्ट्रीम का उपयोग करने के कारणों में से एक समानांतर-आईएसएम जोड़ना है, मानते हुए कि आप इसका प्रभाव समझते हैं।

IntStream.range(0, LIMIT).parallel().forEach($ -> { 
    // some thing thread safe. 
});