[Java] जावा में कोई सॉर्टेडलिस्ट क्यों नहीं है?



Answers

क्योंकि सूची की अवधारणा स्वचालित रूप से क्रमबद्ध संग्रह की अवधारणा के साथ असंगत है। सूची का बिंदु यह है कि list.add(7, elem) को कॉल करने के बाद, list.get(7) कॉल करने के लिए एक कॉल वापस आ जाएगा। एक ऑटो-सॉर्टेड सूची के साथ, तत्व एक मनमानी स्थिति में समाप्त हो सकता है।

Question

जावा में SortedSet और SortedMap इंटरफेस हैं। दोनों जावा के मानक संग्रह ढांचे से संबंधित हैं और तत्वों तक पहुंचने के लिए एक क्रमबद्ध तरीका प्रदान करते हैं।

हालांकि, मेरी समझ में जावा में कोई SortedList नहीं है। आप सूची को सॉर्ट करने के लिए java.util.Collections.sort() का उपयोग कर सकते हैं।

कोई विचार यह क्यों डिजाइन किया गया है?




इस तरह के बारे में सोचें: List इंटरफेस में add(int index, E element) , set(int index, E element) । अनुबंध यह है कि एक बार जब आप स्थिति एक्स पर कोई तत्व जोड़ते हैं तो आप इसे तब तक पाएंगे जब तक आप इससे पहले तत्व जोड़ या निकाल नहीं देते।

यदि कोई सूची कार्यान्वयन इंडेक्स के आधार पर कुछ ऑर्डर में तत्वों को स्टोर करेगा, तो उपरोक्त सूची विधियों का कोई मतलब नहीं होगा।




अप्रैल 2015 तक, किसी भी नए आने वालों के लिए, एंड्रॉइड में अब समर्थन लाइब्रेरी में SortedList क्लास है, जिसे विशेष रूप से RecyclerView साथ काम करने के लिए डिज़ाइन किया गया है। इसके बारे में ब्लॉग पोस्ट यहां है।




एक और बिंदु डालने के संचालन की समय जटिलता है। एक सूची डालने के लिए, एक ओ (1) की जटिलता की अपेक्षा करता है। लेकिन यह एक क्रमबद्ध सूची के साथ गारंटी नहीं दी जा सका।

और सबसे महत्वपूर्ण बात यह है कि सूचियों को उनके तत्वों के बारे में कुछ भी नहीं लगता है। उदाहरण के लिए, आप उन चीजों की सूचियां बना सकते हैं जो equals या compare नहीं करते compare




indexed-tree-map का उपयोग करने पर विचार indexed-tree-map । यह एक बढ़ी हुई जेडीके की ट्रीसेट है जो इंडेक्स द्वारा तत्व तक पहुंच प्रदान करती है और बिना किसी पुनरावृत्ति या छिपी अंतर्निहित सूचियों के तत्व के सूचकांक को ढूंढती है जो पेड़ का बैक अप लेती है। एल्गोरिदम हर बार परिवर्तन होने पर नोड्स बदलने के वजन को अद्यतन करने पर आधारित होता है।




Links