Collection
में यह है:सूची के लिए बाइनरी खोजें लेकिन सेट के लिए नहीं
binarySearch(List list, Object key)
द्विआधारी खोज Set
के लिए लागू नहीं क्यों है? यह केवल List
के लिए क्यों है?
कोई विशिष्ट कारण?
Collection
में यह है:सूची के लिए बाइनरी खोजें लेकिन सेट के लिए नहीं
binarySearch(List list, Object key)
द्विआधारी खोज Set
के लिए लागू नहीं क्यों है? यह केवल List
के लिए क्यों है?
कोई विशिष्ट कारण?
एक सेट अनियंत्रित है, और इसमें मौजूद तत्वों के लिए अनुक्रमणिका नहीं है। इसलिए तत्व की अनुक्रमणिका लौटने वाली एक बाइनरीशर्च() विधि समझ में नहीं आता है।
बाइनरी खोज एक क्रमबद्ध कंटेनर का तात्पर्य है। एक सेट या तो unordered (HashSet
) है, जिस स्थिति में एक बाइनरी खोज नहीं की जा सकती है, या इसे आदेश दिया गया है (TreeSet
), जिस स्थिति में इसका लुकअप ऑपरेशन बाइनरी खोज (यानी O(Log2(N))
) के रूप में पहले से ही कुशल है।
इस मामले में एक बाइनरी खोज केवल तभी काम करेगी जब सूची का आदेश दिया गया हो और सॉर्ट किया गया हो। यानी यह सभी सूचियों के लिए काम नहीं करता है, केवल पूर्व क्रमबद्ध हैं।
एक सेट का आदेश नहीं दिया गया है और सॉर्ट नहीं किया जा सकता है।
सेट क्रमबद्ध हो जाता है, तो आप NavigableSet के तरीकों का आदेश दिया संग्रह पर
द्विआधारी खोज काम करता है से एक का उपयोग कर सकते हैं। सेट का आदेश नहीं दिया गया है।
त्वरित प्रतिक्रिया के लिए सभी को धन्यवाद। मैं उन सभी प्रतिक्रियाओं से समझा हूं जो बाइनरी सर्च का उपयोग केवल ऑर्डर किए गए संग्रह पर किया जा सकता है। लेकिन अगर मैं ट्रीसेट के लिए उपयोग करना चाहता हूं तो क्या होगा? क्या यह संभव नहीं होना चाहिए? सेट से किसी ऑब्जेक्ट को खोजने के लिए कोई वैकल्पिक विकल्प है जो बाइनरी खोज के समान है? –
आप अपने सेट को ऑर्डर किए गए संग्रह में बदल सकते हैं। –
ए 'ट्रीसेट' का आदेश दिया जा सकता है, लेकिन आप इसके तत्वों को किसी सूचकांक से संदर्भित नहीं कर सकते हैं। –