जावा 8 पर थोड़ा सा पढ़ना, मुझे this ब्लॉग पोस्ट स्ट्रीम और उनके बारे में कुछ समझाने के लिए मिला, और जब कमी को शॉर्ट-सर्किट करना संभव होगा। तल में यह कहा गया है:जावा 8 स्ट्रीम शॉर्ट सर्किट
findFirst
या
findAny
के मामले में
नोट हम केवल पहले मूल्य जो विधेय से मेल खाता है (हालांकि
findAny
पहले वापस जाने के लिए इसकी गारंटी नहीं है) की जरूरत है। हालांकि अगर स्ट्रीम में कोई ऑर्डर नहीं है तो हमfindAny
की तरह व्यवहार करने की अपेक्षा करेंगे। ऑपरेशंसallMatch
,noneMatch
औरanyMatch
स्ट्रीम को शॉर्ट-सर्किट नहीं कर सकता है क्योंकि यह निर्धारित करने के लिए सभी मानों का मूल्यांकन कर सकता है कि ऑपरेटरtrue
याfalse
है। इस प्रकार इनका उपयोग कर एक अनंत धारा समाप्त नहीं हो सकती है।
मुझे लगता है कि findFirst
या findAny
शॉर्ट सर्किट में कमी, क्योंकि जैसे ही आप एक तत्व को खोजने के AF, आप आगे किसी भी कार्रवाई करने के लिए की जरूरत नहीं है हो सकता है मिलता है।
लेकिन allMatch
, noneMatch
और anyMatch
के लिए यह क्यों संभव नहीं होगा? allMatch
के लिए, यदि आपको कोई ऐसा लगता है जो भविष्यवाणी से मेल नहीं खाता है, तो आप प्रसंस्करण रोक सकते हैं। किसी के लिए वही नहीं। और anyMatch
विशेष रूप से मुझे समझ में नहीं आता है, क्योंकि यह findAny
(जो लौटाया गया है उसे छोड़कर) के बराबर है?
यह कहकर कि ये तीन शॉर्ट-सर्किट नहीं हो सकते हैं, क्योंकि यह सभी मानों का मूल्यांकन कर सकता है, findFirst/Any
के लिए भी कहा जा सकता है।
क्या कुछ मौलिक अंतर है जो मुझे याद आ रही है? क्या मैं वास्तव में समझ नहीं रहा कि क्या हो रहा है?
"शायद नहीं" जैसा "शायद नहीं" जैसा हो, जैसा कि "अनुमति नहीं है"। – Andreas
@ एंड्रियास हां, मुझे यह नहीं मिल रहा है कि अंतर कहां से आता है। जिस तरह से मैं इसे देख रहा हूं, सबको संक्षिप्त सर्किट किया जा सकता है? – Koekje