Collection.stream().forEach() और Collection.forEach() दोनों का उपयोग संग्रह पर पुनरावृति करने के लिए किया जाता है।
Collection.forEach() संग्रह के पुनरावर्तक का उपयोग करता है। अधिकांश संग्रह उन पर पुनरावृति करते हुए संरचनात्मक रूप से संशोधन की अनुमति नहीं देते हैं। यदि कोई तत्व पुनरावृत्ति के दौरान जोड़ता या हटाता है तो वे तुरंत समवर्ती संशोधन अपवाद फेंक देंगे। यदि Collection.forEach() सिंक्रनाइज़ किए गए संग्रह पर पुनरावृति कर रहा है तो वे संग्रह के खंड को लॉक कर देंगे और इसे सभी कॉलों पर रोक देंगे।
Collection.stream ()। forEach () का उपयोग संग्रह को पुनरावृत्त करने के लिए भी किया जाता है, लेकिन यह पहले संग्रह को स्ट्रीम में परिवर्तित करता है और फिर संग्रह की धारा पर पुनरावृति करता है इसलिए प्रसंस्करण क्रम अपरिभाषित है। यह समवर्ती संशोधन अपवाद भी फेंकता है, यदि कोई संरचनात्मक परिवर्तन उन पर पुनरावृत्ति करते समय हुआ तो यह तुरंत एक अपवाद फेंक देगा।
<टेबल> <थेड>वें> <वें शैली ="पाठ-संरेखण:केंद्र;">कुंजी
वें> <वें शैली ="पाठ-संरेखण:केंद्र;"> संग्रह। प्रत्येक के लिए ()
वें> <वें शैली ="पाठ-संरेखण:केंद्र;"> संग्रह.स्ट्रीम ()। प्रत्येक के लिए ()
वें>
1पी>
बुनियादी
Collection.forEach() संग्रह के पुनरावर्तक का उपयोग करता है
Collection.stream().forEach() का उपयोग संग्रह को पुनरावृत्त करने के लिए भी किया जाता है लेकिन यह पहले संग्रह को स्ट्रीम में परिवर्तित करता है और फिर संग्रह की धारा पर पुनरावृति करता है
2पी>
आदेश
यदि कोई निर्दिष्ट किया जाता है, तो इसे हमेशा Iterable के पुनरावृत्ति क्रम में निष्पादित किया जाता है।
आदेश परिभाषित नहीं है
3पी>
लॉक
यदि सिंक्रनाइज़ किए गए संग्रह पर पुनरावृत्ति हो रही है तो यह संग्रह को लॉक कर देता है और इसे सभी कॉलों में पकड़ लेता है
यह संग्रह को लॉक नहीं करता है
4.
अपवाद
संग्रह में किसी भी संरचनात्मक संशोधन के मामले में यह तुरंत एक अपवाद फेंक देगा
अपवाद बाद में फेंका जाएगा