जब मैं फोन करता हूं तो Stream.sort(..)
तत्वों का एक नया सरणी बनाया जाता है और धारा नए बनाए गए सॉर्ट किए गए सरणी पर पुनरावृत्त होती है?
दूसरे शब्दों में, कैसे जावा 8 स्ट्रीम sort
हुड के तहत करता है?
जब मैं फोन करता हूं तो Stream.sort(..)
तत्वों का एक नया सरणी बनाया जाता है और धारा नए बनाए गए सॉर्ट किए गए सरणी पर पुनरावृत्त होती है?
दूसरे शब्दों में, कैसे जावा 8 स्ट्रीम sort
हुड के तहत करता है?
जवाबों:
जावा मानक पुस्तकालय कोड (और कुछ अन्य पुस्तकालयों) के माध्यम से खोजने के लिए आप grepcode.com का उपयोग कर सकते हैं । दुर्भाग्य से, धारा कार्यान्वयन कोड बल्कि सार है। एक अच्छा प्रारंभिक बिंदु आंतरिक java.util.stream.SortedOps
वर्ग है जो एक धारा को एक क्रमबद्ध धारा में बदल देता है।
वर्तमान कार्यान्वयन (मानक पुस्तकालय कंटेनरों की धाराओं के लिए प्रयोग किया जाता है) यह एक नहीं सेशन यदि धारा पहले से ही क्रमबद्ध हो जाता है बनाता है, यदि धारा के आकार में जाना जाता है (एक सरणी का उपयोग करता है SizedRefSortingSink
), या एक ArrayList में सभी तत्वों को जम जाता है आकार है अगर अज्ञात ( RefSortingSink
)।
बेशक, इस तरह के कार्यान्वयन विवरण किसी भी रिलीज के साथ बदल सकते हैं, लेकिन मौलिक विचार सार्वभौमिक हैं: एक धारा को छाँटना आवश्यक रूप से एक उत्सुक / अवरुद्ध ऑपरेशन है, और एक अनंत धारा को छांटना सार्थक नहीं है। इसका मतलब है कि यदि आप धाराओं का उपयोग करते हैं तो एक धारा को क्रमबद्ध करना उपयोगी नहीं है क्योंकि वे आलसी हो सकती हैं, लेकिन आपको अभी भी सुविधाजनक स्ट्रीम सिंटैक्स प्राप्त होता है।
अन्य धाराओं को अपना कार्यान्वयन प्रदान करना Stream.sorted()
होगा, जो संभवतः समान होगा।