मेरे पास SortedMap है, इसकी चाबियों के प्राकृतिक क्रम के अनुसार आदेश दिया गया है। क्या मैं अपने कुंजीसेट() को SortedSet पर सुरक्षित रूप से अमान्य कास्ट अपवाद को खतरे में डाल सकता हूं।क्या सॉर्ट किए गए मैप की keySet() हमेशा सॉर्टेडसेट पर सुरक्षित रूप से डाली जा सकती है?
यही है, निम्नलिखित फेंक देंगे?
SortedMap<K, V> map = ...;
SortedSet<K> set = (SortedSet<K>) map.keySet();
जवाब "SortedMap के कार्यान्वयन पर निर्भर करता है" है, तो कम से कम यह एक TreeMap के लिए सुरक्षित है?
उन सभी के लिए जो "दस्तावेज में गारंटी नहीं देते" लिखते हैं, मुझे बताएं कि सॉर्टेडसेट की कीसेट() के लिए प्रलेखन कहता है "सेट का इटरेटर आरोही क्रम में कुंजी देता है।" तो भले ही यह "सॉर्टेडसेट" नहीं है, यह एक सेट है जो सॉर्ट किया गया है ... –
प्रैक्टिस में यह ** एक सॉर्टेडसेट है। लेकिन सिद्धांत रूप में, जब तक यह निर्दिष्ट नहीं किया जाता है, इसे (उदाहरण के लिए, एक नया सॉर्टेडसेट नहीं है जो कि आंतरिक कुंजी सेट पुनरावृत्ति के लिए बनाया जा सकता है - माना जाता है कि यह बेवकूफ होगा)। – assylias
सुधार: यहां तक कि अभ्यास में, यह हमेशा एक सॉर्टसेटसेट नहीं है जैसा कि उत्तर में से एक द्वारा इंगित किया गया है। काउंटर उदाहरण के लिए – assylias