दिलचस्प पोस्ट
जब एक चर का मूल्य बदल जाता है तो ईवेंट को ट्रिगर कैसे करें? खिड़कियों के उपयोग में जेसनॉन मणि को रेल में स्थापित नहीं किया जा सकता क्यों यह 'एक सूचक है और एक संदर्भ नहीं है? दस्तावेज़ आधारित डेटाबेस बनाम संबंधपरक डेटाबेस के पेशेवरों / विचार सी # में ओवरलोडिंग असाइनमेंट ऑपरेटर क्या अंततः एक time_t typedef है? जावा स्विंग वर्कस्पेस / सेटिंग्स को सहेजें और लोड करें बैश – वैरिएबल वैरिएबल क्या हमें सूची दृश्य को बदलने के लिए रीसाइक्लाइजर का उपयोग करना चाहिए? जावा में पहले गैर-शून्य मान कैसे प्राप्त करें? मशीन लर्निंग स्विफ्ट के लिए छवि को कन्वर्ट करने के लिए CVPixelBuffer विधानसभा, प्रिंटिंग आस्की नंबर क्या कोई रनटाइम-निर्धारित नाम के साथ एक समारोह बनाने के लिए कोई गैर-eval तरीका है? फ़िल्टर किए गए एनजी-दोहराने वाले डेटा की लंबाई कैसे प्रदर्शित करें Unordered कंटेनरों में उपयोगकर्ता परिभाषित प्रकार के लिए std :: hash <key> :: operator () को कैसे विशेषज्ञ करना है?

Java8 धाराओं में प्रसंस्करण के आदेश को सुनिश्चित करने के लिए कैसे?

मैं XML जावा ऑब्जेक्ट के अंदर सूचियों को संसाधित करना चाहता हूं। मुझे उन सभी तत्वों को संसाधित करना है ताकि मैं उन्हें प्राप्त कर सकूं।

क्या मैं इसलिए प्रत्येक stream पर sequential कॉल करना sequential ? list.stream().sequential().filter().forEach()

या क्या यह समान रूप से लंबे समय तक स्ट्रीम का उपयोग करने के लिए पर्याप्त है क्योंकि मैं समानतावाद का उपयोग नहीं करता हूं? list.stream().filter().forEach()

Solutions Collecting From Web of "Java8 धाराओं में प्रसंस्करण के आदेश को सुनिश्चित करने के लिए कैसे?"

आप गलत प्रश्न पूछ रहे हैं आप sequential बनाम parallel बारे में पूछ रहे हैं, जबकि आप क्रम में वस्तुओं को संसाधित करना चाहते हैं, इसलिए आपको आदेश देने के बारे में पूछना होगा। यदि आपके पास एक आदेश दिया हुआ प्रवाह है और संचालन करने के लिए जो आदेश को बनाए रखने की गारंटी देता है, तो इससे कोई फर्क नहीं पड़ता कि स्ट्रीम समानांतर या अनुक्रमिक में संसाधित है या नहीं; कार्यान्वयन क्रम बनाए रखेगा

आदेश दिया गया संपत्ति समानांतर बनाम अनुक्रमिक से अलग है। यदि आप किसी HashSet पर stream() को कॉल करते हैं तो एक List stream() पर कॉल करते हुए स्ट्रीम को HashSet किया जाता है, तो एक ऑर्डर किए गए स्ट्रीम को रिटर्न करता है ध्यान दें कि आप ऑर्डरिंग अनुबंध जारी करने के लिए unordered() कॉल कर सकते हैं और प्रदर्शन को संभावित रूप से बढ़ा सकते हैं। एक बार जब धारा में कोई आदेश नहीं होता है तो आदेश को पुनः स्थापित करने का कोई रास्ता नहीं है। (एक अनोकार्ड स्ट्रीम को आदेश में बदलने का एकमात्र तरीका sorted करने के लिए कॉल करना है, हालांकि, परिणामस्वरूप क्रम मूल क्रम का नहीं है)

java.util.stream पैकेज दस्तावेजों के "आदेश" अनुभाग भी देखें।

पूरे स्ट्रीम ऑपरेशन में ऑर्डर करने के रखरखाव को सुनिश्चित करने के लिए, आपको स्ट्रीम के स्रोत के दस्तावेज, सभी मध्यवर्ती संचालन और टर्मिनल ऑपरेशन का अध्ययन करना होगा कि क्या वे ऑर्डर बनाए रखते हैं या नहीं (या क्या स्रोत के पास पहले क्रम है जगह)।

यह बहुत ही सूक्ष्म हो सकता है, उदाहरण के तौर पर Stream.iterate(T,UnaryOperator) एक आदेश स्ट्रीम बनाता है जबकि Stream.generate(Supplier) एक Stream.generate(Supplier) स्ट्रीम बनाता है। ध्यान दें कि आपने अपने प्रश्न में एक आम गलती भी की थी, क्योंकि forEach कोई आदेश नहीं रखता है। यदि आप किसी गारंटीकृत ऑर्डर में स्ट्रीम के तत्वों को संसाधित करना चाहते हैं, तो आपको forEachOrdered लिए उपयोग करना होगा

इसलिए यदि आपके प्रश्न में आपकी list वास्तव में एक java.util.List , इसकी stream() विधि एक आदेश दिया स्ट्रीम वापस करेगा और filter आदेश नहीं बदलेगा। इसलिए यदि आप list.stream().filter() .forEachOrdered() कॉल करते हैं, तो list.stream().filter() .forEachOrdered() सभी तत्वों को क्रमिक रूप से संसाधित किया जाएगा, जबकि सूची के लिए। list.parallelStream().filter().forEachOrdered() तत्वों को समानांतर में संसाधित किया जा सकता है जैसे कि फिल्टर द्वारा) लेकिन टर्मिनल क्रिया को अभी भी क्रम में कहा जाएगा (जो स्पष्ट रूप से समानांतर निष्पादन के लाभ को कम करेगा)।

यदि आप, उदाहरण के लिए, एक ऑपरेशन का उपयोग करना जैसे

 List<…> result=inputList.parallelStream().map(…).filter(…).collect(Collectors.toList()); 

पूरे ऑपरेशन को समानांतर निष्पादन से फायदा हो सकता है लेकिन परिणामी सूची हमेशा सही क्रम में होगी, भले ही आप एक समानांतर या अनुक्रमिक स्ट्रीम का उपयोग करते हैं या नहीं।

list.stream ()। अनुक्रमिक ()। फ़िल्टर कर ()। foreach ()

सूची को हमेशा सूची में क्रियान्वित करेगी क्योंकि सूची में आदेश दिया जाता है।

हालांकि अगर हम उपयोग करते हैं

list.stream ()। समानांतर ()

तो बाकी कार्यों के लिए ऑर्डर की गारंटी नहीं है