Stream
एक इंटरफ़ेस है इसलिए जब भी कोई Stream
ऑब्जेक्ट धारण करता है वहां बहुत सारे कार्यान्वयन विशिष्ट विवरण छुपाए जाते हैं।मानक संग्रह द्वारा स्ट्रीम कार्यान्वयन कितने विशेष हैं?
List<String> list = new ArrayList<>();
...
int size = list.stream()
.count();
यह निरंतर या रैखिक समय में किये है:
उदाहरण के लिए, निम्न कोड ले? या यह:
Set<String> set = new TreeSet<>();
...
set.stream()
.sorted()
.forEach(System.out::println);
क्या यह ओ (एन) या ओ (एन लॉग एन) होगा?
सामान्य रूप से, मानक संग्रह द्वारा धाराओं के कार्यान्वयन कितने विशिष्ट हैं?
आपने 'sorted()' भाग का जवाब नहीं दिया। मुझे पता चला कि यह 'शून्य' तुलनित्र के लिए सॉर्टिंग छोड़ देता है (जैसे प्रश्न के कोड का उपयोग करता है) लेकिन 'ट्रीसेट' और 'क्रमबद्ध (...)' कॉल संदर्भ के बावजूद, किसी भी गैर-नल 'तुलनित्र के लिए नहीं छोड़ता है उसी तुलनित्र उदाहरण के लिए ('शून्य' और 'तुलनाकर्ता' प्राकृतिक पहचान() 'समकक्ष पहचानने के बारे में बात न करें)।और यह वही है जब उदाहरण 'forEach' का उपयोग करता है जिसे स्पष्ट रूप से असाधारण माना जाता है, इसलिए वास्तविक तुलनाकर्ताओं के बावजूद सॉर्टिंग को छोड़ दिया जा सकता है ... – Holger
@ होल्गर: ठीक है, हम जिन विशेषताओं को ट्रैक करते हैं उनमें से एक है "प्राकृतिक क्रम में क्रमबद्ध", जो एक पेड़ बिना किसी स्पष्ट तुलनित्र के रूप में जाना जाता है; दूसरे उदाहरण में, वर्तमान कार्यान्वयन ओ (एन) है। –