दूसरे शब्दों में, num
लाइनों को मुद्रित करने के लिए निम्न पंक्ति guranteed है?क्या Stream.count() प्रत्येक तत्व पर जाने के लिए guranteed है?
int num = list.stream().peek(System.out::println).count();
यह सवाल https://stackoverflow.com/a/41346586/2513200
मैं थोड़ा एक चर्चा है कि अनुकूलन कि यात्रा से बचने के कानूनी हो सकता है याद की टिप्पणियों में एक चर्चा से शुरू हो रहा था, लेकिन एक त्वरित खोज के दौरान कुछ भी निर्णायक नहीं मिला।
JavaDocs for Stream.count इस बयान होते हैं:
इस कमी का एक विशेष मामला है और के बराबर है:
return mapToLong(e -> 1L).sum();
लेकिन मुझे यकीन है कि क्या यह यदि कोई गारंटी देता है प्रदान करता है नहीं कर रहा हूँ धारा किसी भी तरह से शॉर्ट-सर्किटिंग तरीके से परिणाम निर्धारित कर सकती है।
इसे जावा 9 में संशोधित किया जाएगा (एपीआई नोट देखें): http://download.java.net/java/jdk9/docs/api/java/util/stream/Stream.html#count-- –
_result_ आवश्यक है, यह कुछ भी निष्पादित करने की गारंटी नहीं है। – Cubic
प्रलेखन के उस हिस्से के ठीक बाद, आप पाएंगे: "एक कार्यान्वयन स्ट्रीम पाइपलाइन निष्पादित नहीं कर सकता है [...] यदि यह सीधे धारा स्रोत से गणना की गणना करने में सक्षम है। ऐसे मामलों में कोई स्रोत तत्व नहीं होगा उलटा हो और कोई मध्यवर्ती संचालन का मूल्यांकन नहीं किया जाएगा। " –